:root{--bg:#f7f5ef;--surface:#fff;--ink:#25302b;--muted:#737b74;--green:#315c48;--green2:#dce8d8;--orange:#d99b52;--orange2:#f4e4ce;--red:#b94e48;--line:#e0dbd0;--shadow:0 12px 35px rgba(39,55,47,.10);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg)}button,input,textarea,select{font:inherit}button{cursor:pointer}.hidden{display:none!important}.loading{min-height:80vh;display:grid;place-items:center;color:var(--muted)}
.login{min-height:100vh;padding:calc(42px + env(safe-area-inset-top)) 22px 30px;max-width:520px;margin:auto}.brand{display:flex;align-items:center;gap:14px;margin-bottom:36px}.brand-mark{width:54px;height:54px;border-radius:18px;background:var(--green);color:white;display:grid;place-items:center;font-size:27px;box-shadow:var(--shadow)}h1{font-size:27px;margin:0 0 5px}h2{font-size:21px;margin:0}.sub{color:var(--muted);font-size:14px;margin:0}.login-card{background:var(--surface);padding:22px;border-radius:24px;box-shadow:var(--shadow)}.member-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0}.member-grid.three{grid-template-columns:repeat(3,1fr)}.member-choice{border:2px solid transparent;border-radius:18px;background:var(--bg);padding:16px 8px;color:var(--ink)}.member-choice.selected{border-color:var(--green);background:var(--green2)}.avatar{width:46px;height:46px;border-radius:50%;background:var(--green2);color:var(--green);display:grid;place-items:center;font-size:18px;font-weight:700;margin:auto auto 8px}.pin{width:100%;border:1px solid var(--line);border-radius:14px;padding:14px;text-align:center;font-size:21px;letter-spacing:12px;background:#fff}.primary{border:0;border-radius:14px;background:var(--green);color:#fff;padding:14px 18px;font-weight:700}.wide{width:100%}.primary:disabled{opacity:.45}
.app{max-width:760px;margin:auto;min-height:100vh;padding-bottom:calc(82px + env(safe-area-inset-bottom))}.topbar{position:sticky;top:0;z-index:5;background:rgba(247,245,239,.94);backdrop-filter:blur(12px);padding:calc(14px + env(safe-area-inset-top)) 18px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px}.identity{display:flex;gap:10px;align-items:center;min-width:0}.identity .avatar{margin:0;width:39px;height:39px;flex:0 0 auto}.top-actions{display:flex;gap:8px}.icon-btn{border:0;background:var(--surface);border-radius:12px;padding:9px;color:var(--ink)}.child-switch{display:flex;background:var(--surface);border-radius:12px;padding:3px;gap:2px}.child-switch button{border:0;background:transparent;border-radius:9px;padding:7px 9px;color:var(--muted);font-size:12px}.child-switch button.active{background:var(--green);color:white;font-weight:700}.content{padding:8px 16px}.page-title{display:flex;justify-content:space-between;align-items:flex-end;margin:10px 2px 14px}.page-title h2{font-size:24px}.date{color:var(--muted);font-size:12px}
.hero{background:var(--green);color:white;padding:18px;border-radius:22px;box-shadow:var(--shadow);margin-bottom:14px}.hero strong{font-size:25px;display:block;margin:5px 0}.hero .sub{color:rgba(255,255,255,.75)}.progress{height:8px;background:rgba(255,255,255,.2);border-radius:99px;overflow:hidden;margin-top:13px}.progress span{display:block;height:100%;background:#fff;border-radius:99px}.member-board{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:14px 0}.member-stat{background:var(--surface);padding:11px 4px;border-radius:15px;text-align:center;box-shadow:0 5px 18px rgba(39,55,47,.05);font-size:11px}.member-stat .avatar{width:34px;height:34px;font-size:13px;margin-bottom:5px}.member-stat b{display:block;font-size:18px;color:var(--green)}
.section-head{display:flex;justify-content:space-between;align-items:center;margin:19px 2px 9px}.section-head h3{margin:0;font-size:16px}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;background:var(--orange2);color:#75501f;font-size:11px}.badge.green{background:var(--green2);color:var(--green)}.badge.red{background:#f4d9d7;color:var(--red)}
.task-list{display:grid;gap:10px}.task-card{background:var(--surface);border-radius:17px;padding:14px;border-left:4px solid var(--orange);box-shadow:0 6px 20px rgba(39,55,47,.05)}.task-card.confirmed{border-left-color:#6a9d7f;opacity:.78}.task-card.overdue{border-left-color:var(--red)}.task-card.daily{border-left-color:#6383a4}.task-top{display:flex;justify-content:space-between;gap:10px}.task-title{font-weight:700;font-size:15px}.task-meta{font-size:11px;color:var(--muted);margin:6px 0}.task-desc{font-size:13px;line-height:1.5;margin:8px 0}.actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}.small-btn{border:0;border-radius:10px;background:var(--green2);color:var(--green);padding:8px 10px;font-size:12px;font-weight:700}.small-btn.main{background:var(--green);color:white}.small-btn.danger{background:#f4d9d7;color:var(--red)}.empty{text-align:center;color:var(--muted);padding:44px 15px;background:var(--surface);border-radius:20px}.filters{display:flex;gap:7px;overflow:auto;padding-bottom:7px}.filter{border:0;white-space:nowrap;background:var(--surface);padding:9px 13px;border-radius:12px;color:var(--muted)}.filter.active{background:var(--green);color:white}
.form-card{background:var(--surface);border-radius:20px;padding:17px;box-shadow:var(--shadow)}.field{display:grid;gap:7px;margin-bottom:15px}.field>label{font-size:12px;color:var(--muted);font-weight:700}.field input,.field textarea,.field select{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;background:white;color:var(--ink)}.field textarea{min-height:80px;resize:vertical}.type-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px}.type-switch button{border:0;border-radius:12px;padding:11px;background:var(--bg);color:var(--muted)}.type-switch button.active{background:var(--green2);color:var(--green);font-weight:700}.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.assignee-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.assignee-choice{position:relative;background:var(--bg);border:2px solid transparent;border-radius:14px;padding:9px 3px;text-align:center;color:var(--muted);font-size:11px}.assignee-choice:has(input:checked){border-color:var(--green);background:var(--green2);color:var(--green)}.assignee-choice input{position:absolute;opacity:0;width:1px;height:1px}.assignee-choice .avatar{width:32px;height:32px;font-size:12px;margin-bottom:4px}.assignee-choice b{display:block}
.submission-photo{margin:10px 0}.submitted-images{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.submitted-images img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:11px;background:var(--bg);min-height:80px;cursor:zoom-in}.photo-expired{border:1px dashed var(--line);border-radius:12px;padding:16px;text-align:center;color:var(--muted);font-size:12px;background:var(--bg)}.sr-file-input{position:fixed;left:-9999px;top:-9999px;width:1px;height:1px;opacity:0}.photo-picker-overlay{position:fixed;inset:0;z-index:30;background:rgba(18,28,23,.62);display:flex;align-items:flex-end;justify-content:center;padding-top:40px}.photo-picker{background:var(--surface);width:min(760px,100%);max-height:88vh;overflow:auto;border-radius:24px 24px 0 0;padding:18px 16px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -15px 40px rgba(0,0,0,.18)}.photo-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.photo-preview{position:relative;min-width:0}.photo-preview img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;background:var(--bg)}.photo-preview button{position:absolute;right:5px;top:5px;width:25px;height:25px;border:0;border-radius:50%;background:rgba(30,35,32,.78);color:white;font-size:18px;line-height:1}.photo-preview span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;color:var(--muted);padding:4px 2px}.photo-add-more{flex:1 1 100%;border:1px dashed var(--green);padding:11px}.image-viewer{position:fixed;inset:0;z-index:40;background:rgba(10,16,13,.92);display:flex;align-items:center;justify-content:center;padding:48px 12px}.image-viewer img{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px}.image-viewer button{position:absolute;right:14px;top:calc(14px + env(safe-area-inset-top));width:38px;height:38px;border:0;border-radius:50%;background:rgba(255,255,255,.18);color:#fff;font-size:27px}.image-viewer-loading{color:#fff;font-size:13px}
.event{display:flex;gap:11px;padding:13px 2px;border-bottom:1px solid var(--line)}.event .avatar{margin:0;width:35px;height:35px;font-size:12px;flex:0 0 auto}.event-text{font-size:13px;line-height:1.5}.event-time{color:var(--muted);font-size:10px;margin-top:3px}.settings{display:grid;gap:14px}.setting-card{background:var(--surface);border-radius:18px;padding:16px}.setting-card h3{margin:0 0 12px}.notice{background:var(--orange2);border-radius:14px;padding:12px;font-size:12px;line-height:1.5;margin-bottom:12px}
.bottom-nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);z-index:6;width:min(760px,100%);display:grid;grid-template-columns:repeat(5,1fr);background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:7px 7px calc(7px + env(safe-area-inset-bottom))}.nav-btn{border:0;background:transparent;color:var(--muted);padding:7px 2px;font-size:10px}.nav-btn span{display:block;font-size:20px;margin-bottom:2px}.nav-btn.active{color:var(--green);font-weight:700}.fab{background:var(--green);color:white;border-radius:16px;margin-top:-16px;box-shadow:0 7px 20px rgba(49,92,72,.3)}
.toast{position:fixed;z-index:20;left:50%;top:calc(18px + env(safe-area-inset-top));transform:translate(-50%,-120px);background:#25302b;color:white;border-radius:12px;padding:11px 16px;font-size:13px;transition:.25s;max-width:85%;text-align:center}.toast.show{transform:translate(-50%,0)}.offline{position:fixed;left:0;right:0;bottom:calc(70px + env(safe-area-inset-bottom));z-index:10;background:var(--red);color:white;text-align:center;padding:8px;font-size:12px}
@media(max-width:380px){.member-board{grid-template-columns:1fr 1fr}.two{grid-template-columns:1fr}.content{padding-left:12px;padding-right:12px}.topbar{padding-left:10px;padding-right:10px}.topbar .identity .avatar{display:none}.child-switch button{padding:7px}.assignee-grid{grid-template-columns:1fr 1fr}.member-grid.three{grid-template-columns:1fr}.member-choice{padding:10px}}
