:root{--bg:#fafafa;--panel:#fff;--line:#ececec;--line2:#e2e2e2;--text:#111;--muted:#6b6b6b;--faint:#9a9a9a;--accent:#111;--accent-fg:#fff;--work:#2563eb;--work-bg:#eff4ff;--life:#059669;--life-bg:#ecfdf5;--p1:#dc2626;--p2:#d97706;--p3:#2563eb;--p4:#8a8a8a;--radius:12px;--shadow:0 1px 2px rgba(0,0,0,.04), 0 4px 16px rgba(0,0,0,.04);--tabbar-h:60px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans CJK SC,system-ui,sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{overscroll-behavior-y:none}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{letter-spacing:-.01em;margin:0}.app{min-height:100dvh}.main{padding:0 16px calc(var(--tabbar-h) + 24px + env(safe-area-inset-bottom));max-width:980px;margin:0 auto}.topbar{z-index:5;padding:calc(10px + env(safe-area-inset-top)) 0 10px;background:var(--bg,#fafafa);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.topbar h1{font-size:20px;font-weight:650}.topactions{gap:4px;display:flex}.sidenav{display:none}.tabbar{z-index:10;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);background:rgba(255,255,255,.92);display:flex;position:fixed;bottom:0;left:0;right:0}.tab{color:var(--faint);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:11px;display:flex}.tab.active{color:var(--text);font-weight:600}@media (min-width:860px){.app.shell{grid-template-columns:236px 1fr;display:grid}.tabbar,.topactions{display:none}.main{width:100%;padding:0 32px 40px}.sidenav{border-right:1px solid var(--line);background:#f6f6f6;flex-direction:column;height:100dvh;padding:18px 12px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:4px 10px 18px;font-size:15px;font-weight:650;display:flex}.brand img{border-radius:7px;width:26px;height:26px}.navitem{color:var(--muted);border-radius:9px;align-items:center;gap:10px;margin-bottom:2px;padding:9px 10px;font-size:14px;display:flex}.navitem:hover{color:var(--text);background:#ededed}.navitem.active{color:var(--text);background:#e8e8e8;font-weight:600}.navfoot{margin-top:auto}.me{border-top:1px solid var(--line);align-items:center;gap:10px;margin-top:8px;padding:12px 10px 0;display:flex}.who{flex-direction:column;flex:1;font-size:13px;line-height:1.3;display:flex}.who small{color:var(--faint)}}.avatar{color:#fff;background:#111;border-radius:50%;place-items:center;width:30px;height:30px;font-size:13px;font-weight:600;display:grid}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.section{margin-top:18px}.section-head{justify-content:space-between;align-items:center;margin:0 2px 8px;display:flex}.section-head h2{align-items:center;gap:6px;font-size:14px;font-weight:600;display:flex}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:12px}.btn{border:1px solid var(--line2);cursor:pointer;white-space:nowrap;background:#fff;border-radius:9px;justify-content:center;align-items:center;gap:6px;height:36px;padding:0 14px;font-size:14px;display:inline-flex}.btn:hover{background:#f4f4f4}.btn.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn.primary:hover{background:#2a2a2a}.btn.danger{color:#b91c1c}.btn.sm{height:30px;padding:0 10px;font-size:13px}.btn:disabled{opacity:.5;cursor:default}.icon-btn{cursor:pointer;width:36px;height:36px;color:var(--muted);background:0 0;border:0;border-radius:9px;place-items:center;display:inline-grid}.icon-btn:hover{color:var(--text);background:#efefef}.input,select.input,textarea.input{border:1px solid var(--line2);background:#fff;border-radius:10px;outline:none;width:100%;height:40px;padding:0 12px;font-size:15px}textarea.input{resize:vertical;height:auto;padding:10px 12px}.input:focus{border-color:#999;box-shadow:0 0 0 3px rgba(0,0,0,.05)}label.field{color:var(--muted);margin-bottom:12px;font-size:13px;display:block}label.field>.input,label.field>select,label.field>textarea{color:var(--text);margin-top:6px}.row{align-items:center;gap:8px;display:flex}.grow{flex:1;min-width:0}.segmented{background:#efefef;border-radius:10px;gap:2px;padding:3px;display:inline-flex}.segmented button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:6px 14px;font-size:13px}.segmented button.on{color:var(--text);background:#fff;font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.08)}.badge{white-space:nowrap;border-radius:6px;align-items:center;height:20px;padding:0 7px;font-size:11px;font-weight:600;display:inline-flex}.badge.p1{color:var(--p1);background:#fef2f2}.badge.p2{color:var(--p2);background:#fffbeb}.badge.p3{color:var(--p3);background:#eff6ff}.badge.p4{color:var(--p4);background:#f4f4f4}.badge.gray{color:var(--muted);background:#f1f1f1}.badge.warn{color:#c2410c;background:#fff7ed}.empty{text-align:center;color:var(--faint);padding:22px;font-size:13px}.list{margin:0;padding:0;list-style:none}.list>li{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:12px 14px;display:flex}.list>li:last-child{border-bottom:0}.toast{left:50%;bottom:calc(var(--tabbar-h) + 24px + env(safe-area-inset-bottom));color:#fff;z-index:50;box-shadow:var(--shadow);background:#111;border-radius:10px;padding:9px 16px;font-size:13px;position:fixed;transform:translate(-50%)}.modal-mask{z-index:40;background:rgba(0,0,0,.28);justify-content:center;align-items:flex-end;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.modal{width:100%;max-width:480px;padding:18px 18px calc(18px + env(safe-area-inset-bottom));background:#fff;border-radius:16px 16px 0 0;max-height:88dvh;overflow:auto}@media (min-width:640px){.modal-mask{align-items:center}.modal{border-radius:16px}}.modal h3{margin-bottom:14px;font-size:16px}.table{border-collapse:collapse;width:100%;font-size:14px}.table th{text-align:left;color:var(--faint);border-bottom:1px solid var(--line);padding:10px 14px;font-size:12px;font-weight:500}.table td{border-bottom:1px solid var(--line);padding:10px 14px}.table tr:last-child td{border-bottom:0}.notice{color:var(--muted);background:#f5f5f5;border-radius:10px;padding:10px 12px;font-size:13px}.icon-btn.refresh.spinning svg{animation:.8s linear infinite wb-spin}@keyframes wb-spin{to{transform:rotate(360deg)}}
