:root{--ink:#17221e;--muted:#6f7f78;--paper:#f4f1e9;--panel:#fffdfa;--green:#176b4d;--green2:#239269;--gold:#d89d42;--red:#c84d4d;--line:#dce1dc;--shadow:0 20px 50px rgba(22,39,32,.09);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 90% 0,#dce9df 0,transparent 25%),var(--paper)}button,input,select,textarea{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:#12362f;color:#fff;padding:32px 22px;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:13px;margin-bottom:42px}.brand strong{display:block;font-size:21px}.brand small{display:block;color:#9ebbb2;letter-spacing:1.5px;margin-top:4px}.brand-mark{width:48px;height:48px;border-radius:15px;display:grid;place-items:center;color:#fff;font-size:24px;font-weight:800;background:linear-gradient(145deg,var(--gold),#bd7635);box-shadow:inset 0 0 0 1px #ffffff33}.sidebar nav{display:grid;gap:8px}.sidebar nav button{border:0;background:transparent;color:#bed0ca;text-align:left;padding:13px 16px;border-radius:12px;cursor:pointer}.sidebar nav button.active,.sidebar nav button:hover{background:#ffffff16;color:#fff}.account{margin-top:auto;padding-top:20px;border-top:1px solid #ffffff20;display:flex;justify-content:space-between;align-items:center}.account button{border:0;background:transparent;color:#a7beb6;cursor:pointer}.app{margin-left:248px;max-width:1500px;padding:40px 46px 100px}.app>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.app h1{font-family:Georgia,"Songti SC",serif;font-size:36px;margin:2px 0}.eyebrow{font-size:12px;letter-spacing:2.8px;color:var(--green2);font-weight:800;margin:0}.primary,.secondary,.ghost{border-radius:12px;padding:12px 18px;font-weight:700;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent}.primary{background:var(--green);color:#fff;box-shadow:0 8px 22px #176b4d32}.primary:hover{background:#10573e}.secondary{background:#edf5f1;color:var(--green);border-color:#cfe3d9}.ghost{background:transparent;color:var(--green);border-color:var(--line)}.wide{width:100%}.view{display:none}.view.active{display:block}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:20px}.metric-grid article,.panel,.action-grid article{background:rgba(255,253,250,.94);border:1px solid #fff;border-radius:20px;box-shadow:var(--shadow)}.metric-grid article{padding:24px}.metric-grid span{color:var(--muted)}.metric-grid strong{display:block;font-family:Georgia,serif;font-size:29px;margin:14px 0 8px}.metric-grid small{color:#94a098}.panel{padding:25px;margin-bottom:20px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.panel h2,.panel-head h2{margin:0 0 5px;font-size:21px}.panel-head p,.muted{margin:0;color:var(--muted)}.entry-list{display:grid;gap:10px}.empty{padding:45px 15px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:15px}.entry-row{display:grid;grid-template-columns:100px minmax(160px,1.3fr) minmax(130px,1fr) minmax(100px,.7fr) 120px 56px;align-items:center;gap:14px;padding:14px 12px;border-bottom:1px solid #e7e9e5;cursor:pointer}.entry-row:last-child{border-bottom:0}.entry-row:hover{background:#f6f8f4;border-radius:12px}.entry-row .date,.entry-row .meta{font-size:13px;color:var(--muted)}.entry-row strong{font-size:16px}.entry-row .amount{text-align:right;font-size:18px;font-weight:800}.entry-row .income{color:var(--green2)}.entry-row .expense{color:var(--ink)}.photo-badge{background:#eef4f1;color:var(--green);border-radius:30px;padding:6px 9px;font-size:12px;text-align:center}.filters{display:grid;grid-template-columns:1fr .7fr .8fr .8fr 1.6fr auto;gap:10px}.filters input,.filters select,.form-grid input,.form-grid select,.form-grid textarea,.stack input,.login-card input{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink);outline:none}.filters input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.stack input:focus,.login-card input:focus{border-color:var(--green2);box-shadow:0 0 0 3px #23926918}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.project-card{padding:18px;border:1px solid var(--line);border-radius:15px;background:#fafbf8}.project-card.off{opacity:.58}.project-card h3{margin:0 0 10px}.project-card .stats{display:flex;gap:16px;font-size:13px;color:var(--muted);margin-bottom:14px}.project-card .buttons{display:flex;gap:8px}.chips{display:flex;flex-wrap:wrap;gap:9px}.chips span{padding:8px 12px;border-radius:30px;background:#edf5f1;color:#285c49}.action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:20px}.action-grid article{padding:26px}.action-grid p{color:var(--muted);min-height:50px}.action-icon{width:48px;height:48px;border-radius:14px;background:#e6f1eb;display:grid;place-items:center;color:var(--green);font-weight:900}.narrow{max-width:600px}.stack{display:grid;gap:16px}.stack label,.form-grid label,.login-card label{display:grid;gap:7px;font-size:14px;font-weight:650}.bottom-nav{display:none}dialog{width:min(760px,calc(100vw - 30px));max-height:92vh;border:0;border-radius:22px;padding:0;box-shadow:0 30px 100px #0005;color:var(--ink)}dialog::backdrop{background:#10221c99;backdrop-filter:blur(4px)}dialog form{padding:26px;overflow:auto;max-height:92vh}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.dialog-head h2{margin:3px 0}.close{width:40px;height:40px;border-radius:12px;border:0;background:#eef1ee;font-size:24px;cursor:pointer}.type-switch{display:grid;grid-template-columns:1fr 1fr;background:#edf0ec;padding:4px;border-radius:13px;margin-bottom:18px}.type-switch label input{display:none}.type-switch span{display:block;text-align:center;padding:10px;border-radius:10px;cursor:pointer}.type-switch input:checked+span{background:var(--green);color:#fff}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.span-2{grid-column:1/-1}.photo-block{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.photo-head{display:flex;align-items:center;justify-content:space-between}.photo-head h3{margin:0}.photo-head p{margin:4px 0;color:var(--muted);font-size:13px}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.photo-card{position:relative;border:1px solid var(--line);border-radius:12px;padding:7px;background:#fff}.photo-card img{width:100%;height:110px;object-fit:cover;border-radius:8px;display:block}.photo-card input{width:100%;border:0;border-top:1px solid #eee;margin-top:6px;padding:8px 4px}.photo-card button{position:absolute;right:10px;top:10px;border:0;border-radius:50%;width:28px;height:28px;background:#1b2723cc;color:#fff}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.form-error{color:var(--red);min-height:18px}.toast{position:fixed;right:25px;bottom:25px;background:#182b24;color:#fff;padding:14px 20px;border-radius:12px;box-shadow:var(--shadow);z-index:100;opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:none}.login-page{display:grid;place-items:center;padding:22px;background:linear-gradient(135deg,#0f332b,#245b49)}.login-card{width:min(410px,100%);background:#fffdfa;border-radius:24px;padding:38px;box-shadow:0 30px 90px #071b1555}.login-card .brand-mark{margin-bottom:22px}.login-card h1{font:700 34px Georgia,"Songti SC",serif;margin:5px 0}.login-card .muted{margin-bottom:25px}.login-card form{display:grid;gap:16px}.remember{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center}.remember input{width:auto!important}.login-foot{font-size:12px;color:#8a978f;text-align:center;margin:18px 0 0}
.log-filters{display:grid;grid-template-columns:220px minmax(260px,1fr) auto auto;gap:10px}.log-filters input,.log-filters select{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:#fff}.log-list{display:grid}.log-row{display:grid;grid-template-columns:145px 92px minmax(0,1fr) 90px;align-items:start;gap:14px;padding:16px 10px;border-bottom:1px solid #e7e9e5}.log-row:last-child{border-bottom:0}.log-row time,.log-row small{color:var(--muted);font-size:13px}.log-row p{margin:5px 0 0;color:var(--muted);line-height:1.55;word-break:break-word}.log-action{display:inline-flex;width:max-content;padding:5px 10px;border-radius:999px;background:#edf5f1;color:var(--green);font-size:12px;font-weight:800}.action-delete{background:#fff0ed;color:#b2473d}.action-update{background:#fff6e6;color:#9a691f}.action-login,.action-logout{background:#eef2f5;color:#5e6b72}
@media(max-width:1050px){.metric-grid{grid-template-columns:repeat(2,1fr)}.filters{grid-template-columns:repeat(3,1fr)}.action-grid{grid-template-columns:1fr}.entry-row{grid-template-columns:85px 1.4fr 1fr 110px 48px}.entry-row .category{display:none}}
@media(max-width:720px){body{padding-bottom:82px}.sidebar{display:none}.app{margin:0;padding:calc(20px + env(safe-area-inset-top)) 15px 100px}.app>header{margin-bottom:19px}.app h1{font-size:28px}.app>header .primary{display:none}.metric-grid{gap:10px}.metric-grid article{padding:17px;border-radius:16px}.metric-grid strong{font-size:22px;margin:10px 0 5px}.metric-grid small{font-size:11px}.panel{padding:16px;border-radius:17px}.panel-head{align-items:flex-start}.bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(6,1fr);align-items:center;left:0;right:0;bottom:0;padding:7px 8px calc(7px + env(safe-area-inset-bottom));background:#fffefbef;backdrop-filter:blur(14px);border-top:1px solid #dce1dc;z-index:20}.bottom-nav button{border:0;background:none;color:#708078;padding:10px 2px;font-size:13px}.bottom-nav button.active{color:var(--green);font-weight:800}.bottom-nav .fab{width:50px;height:50px;margin:-26px auto 0;border-radius:50%;background:var(--green);color:#fff;font-size:28px;box-shadow:0 9px 25px #176b4d66}.entry-row{grid-template-columns:70px minmax(0,1fr) auto;gap:10px;padding:13px 5px}.entry-row .party,.entry-row .category{display:none}.entry-row .amount{font-size:16px}.entry-row .photo-badge{grid-column:3}.filters{grid-template-columns:1fr 1fr}.filters #filterQ{grid-column:1/-1}.project-grid{grid-template-columns:1fr}.photo-grid{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}dialog form{padding:18px}.action-grid article{padding:20px}.login-card{padding:28px}.photo-head{align-items:flex-start}.file-button{padding:10px 12px}.log-filters{grid-template-columns:1fr 1fr}.log-filters input{grid-column:1/-1}.log-row{grid-template-columns:90px 72px 1fr;gap:8px;padding:14px 2px}.log-row>small{grid-column:3}.log-row p{font-size:13px}}

.filtered-summary{padding:0 24px 24px;border-bottom:1px solid #dce6df}.filtered-summary>p{color:#55665c}.filtered-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.filtered-metrics article{padding:16px;background:#f1f6f3;border-radius:12px}.filtered-metrics span{display:block;color:#52655b;font-size:13px}.filtered-metrics strong{display:block;font-size:22px;margin-top:8px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.filtered-downloads{display:flex;gap:14px;flex-wrap:wrap;margin-top:18px;font-size:14px}.filtered-downloads a{color:#176b4d;text-decoration:underline}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:20px}.photo-head{flex-wrap:wrap;gap:10px}@media(max-width:650px){.filtered-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.filtered-summary{padding:0 14px 18px}.filtered-metrics strong{font-size:20px}}
