:root{--bg:#f5f5f2;--surface:#fff;--surface-2:#f0f0ec;--border:#e3e3de;--border-strong:#cfcfc8;--text:#24272b;--muted:#6d7178;--faint:#9a9ea5;--accent:#4b6e5f;--accent-soft:#e4ece7;--hint-bg:#f7f1dc;--hint-text:#7a6420;--neutral-bg:#ecedea;--danger:#a8352b;--radius:8px;--shadow:0 1px 2px #0000000a;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,system-ui,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:14px;line-height:1.5}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);min-width:1024px}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent)}.app{height:100%;display:flex}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;flex:none;gap:4px;width:200px;padding:28px 16px;display:flex}.sidebar .brand{color:var(--text);padding:0 10px 18px;font-size:15px;font-weight:600}.nav-btn{text-align:left;width:100%;color:var(--muted);background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.nav-btn:hover{background:var(--surface-2)}.nav-btn.active{background:var(--accent-soft);color:var(--accent);font-weight:500}.nav-btn .count{color:var(--faint);font-size:12px}.main{flex:1;padding:32px 40px;overflow:auto}.page{max-width:1120px;margin:0 auto}.page-narrow{max-width:760px;margin:0 auto}h1{margin:0 0 4px;font-size:22px;font-weight:600}h2{margin:28px 0 10px;font-size:15px;font-weight:600}h2:first-child{margin-top:0}.sub{color:var(--muted);margin:0 0 20px}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:12px}.row{align-items:center;gap:8px;display:flex}.row.between{justify-content:space-between}.wrap{flex-wrap:wrap}.gap-lg{gap:16px}.stack{flex-direction:column;gap:8px;display:flex}.mt{margin-top:12px}.mb{margin-bottom:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:12px}.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:6px;padding:6px 12px;line-height:1.3}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(.95)}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2);color:var(--text)}.btn.sm{padding:3px 8px;font-size:12px}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.link{color:var(--accent);background:0 0;border:0;padding:0}.field{flex-direction:column;gap:4px;display:flex}.field label{color:var(--muted);font-size:12px}input[type=text],input[type=number],input[type=password],input[type=date],input[type=time],select,textarea{border:1px solid var(--border-strong);background:var(--surface);border-radius:6px;outline:none;min-width:0;padding:6px 8px}input:focus,select:focus,textarea:focus{border-color:var(--accent)}input[type=number]{width:72px}textarea{resize:vertical;width:100%}.inline-input{background:0 0;border:1px solid #0000;border-radius:4px;width:100%;padding:3px 6px}.inline-input:hover{border-color:var(--border)}.inline-input:focus{border-color:var(--accent);background:var(--surface)}.checkbox{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.hint{background:var(--neutral-bg);color:var(--muted);border-radius:4px;padding:1px 7px;font-size:12px;display:inline-block}.hint.warn{background:var(--hint-bg);color:var(--hint-text)}.hint.accent{background:var(--accent-soft);color:var(--accent)}.notice{border-radius:var(--radius);background:var(--neutral-bg);color:var(--muted);justify-content:space-between;align-items:center;margin-bottom:16px;padding:10px 14px;display:flex}.notice.warn{background:var(--hint-bg);color:var(--hint-text)}.error-box{border-radius:var(--radius);background:var(--hint-bg);color:var(--hint-text);padding:10px 14px}.loadbar{background:var(--surface-2);border-radius:3px;height:6px;position:relative;overflow:hidden}.loadbar .fill{background:var(--accent);opacity:.55;border-radius:3px;height:100%}.loadbar .fill.over{background:var(--muted);opacity:.7}.loadbar .fill.pinned{background:var(--accent);opacity:.9}.task-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.task-row+.task-row{margin-top:8px}.task-row.done{opacity:.55}.task-row.done .title{text-decoration:line-through}.task-row .body{flex:1;min-width:0}.task-row .title{font-weight:500}.task-row .meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;font-size:12px;display:flex}.task-row .actions{opacity:0;gap:4px;transition:opacity .15s;display:flex}.task-row:hover .actions{opacity:1}.task-row .note{color:var(--muted);white-space:pre-wrap;margin-top:4px;font-size:12px}.week{grid-template-columns:repeat(7,minmax(0,1fr));align-items:start;gap:10px;display:grid}.week+.week{margin-top:14px}.day-col{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;min-height:220px;display:flex}.day-col.rest{background:var(--surface-2)}.day-col.over-drop{border-color:var(--accent)}.day-head{border-bottom:1px solid var(--border);padding:10px 12px 8px}.day-head .d{font-weight:600}.day-head .w{color:var(--muted);margin-left:6px;font-size:12px}.day-head .load{color:var(--muted);justify-content:space-between;margin-top:4px;font-size:12px;display:flex}.day-body{flex-direction:column;flex:1;gap:6px;padding:8px;display:flex}.task-card{background:var(--surface);border:1px solid var(--border);cursor:grab;box-shadow:var(--shadow);border-radius:6px;padding:8px 10px;font-size:13px}.task-card:active{cursor:grabbing}.task-card.placeholder{background:var(--accent-soft);border:1px dashed var(--accent);min-height:52px;box-shadow:none;opacity:.7}.task-card.overlay{opacity:.85;cursor:grabbing;transform:rotate(1.5deg);box-shadow:0 8px 24px #00000029}.task-card .t{justify-content:space-between;align-items:flex-start;gap:6px;display:flex}.task-card .t .name{word-break:break-word;flex:1;min-width:0}.task-card .m{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:12px;display:flex}.task-card .card-actions{opacity:0;flex-wrap:wrap;align-items:center;gap:2px;max-height:0;margin-top:6px;font-size:12px;transition:max-height .15s,opacity .15s;display:flex;overflow:hidden}.task-card:hover .card-actions,.task-card:focus-within .card-actions{opacity:1;max-height:60px}.task-card .card-actions .btn.sm{white-space:nowrap;padding:2px 5px;font-size:11px}.task-card .card-actions{gap:4px}.icon-btn{width:24px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:5px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.pin{width:20px;height:18px;color:var(--accent)}.icon-btn.pin.off{color:var(--faint);opacity:.35}.task-card:hover .icon-btn.pin.off{opacity:.8}.draft{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:12px 14px}.draft+.draft{margin-top:8px}.draft .grid{grid-template-columns:1fr auto;align-items:start;gap:12px;display:grid}.draft .fields{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-top:8px;display:flex}.draft .fields .field label{font-size:11px}.group-title{color:var(--muted);text-transform:none;letter-spacing:.02em;margin:18px 0 6px;font-size:12px}.group-title:first-child{margin-top:0}.modal-bg{z-index:10;background:#1e1e1e40;justify-content:center;align-items:center;display:flex;position:fixed;top:0;bottom:0;left:0;right:0}.modal{background:var(--surface);border-radius:10px;min-width:360px;max-width:600px;padding:20px 22px;box-shadow:0 10px 30px #0000001f}.modal h3{margin:0 0 12px;font-size:15px}.modal .foot{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}table.plain{border-collapse:collapse;width:100%}table.plain th,table.plain td{text-align:left;border-bottom:1px solid var(--border);padding:6px 8px;font-size:13px}table.plain th{color:var(--muted);font-size:12px;font-weight:500}.cal{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.cal .c{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:8px;font-size:12px}.cal .c.rest{background:var(--surface-2)}.cal .c .d{font-weight:500}.cal .c input[type=number]{width:56px;padding:2px 6px}.dep-list{border:1px solid var(--border);background:var(--surface);border-radius:6px;flex-direction:column;gap:4px;min-width:260px;max-height:160px;padding:6px 8px;display:flex;overflow:auto}.dep-list label{cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.empty{text-align:center;color:var(--muted);padding:40px 0}.login-wrap{justify-content:center;align-items:center;min-height:100%;padding:40px;display:flex}.login-card{width:380px;padding:24px 26px}.sidebar-foot{border-top:1px solid var(--border);color:var(--muted);margin-top:auto;padding:12px 10px 0}.sync-badge{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:inline-flex}.sync-badge .dot{background:var(--faint);border-radius:50%;width:7px;height:7px}.sync-badge.synced .dot{background:var(--accent)}.sync-badge.saving .dot{background:var(--accent);opacity:.5}.sync-badge.offline .dot,.sync-badge.error .dot{background:var(--hint-text)}.history-day{margin-top:22px}.history-day:first-of-type{margin-top:0}.history-head{align-items:baseline;padding:0 2px 8px;display:flex}.history-head .d{font-weight:600}.history-row .actions{opacity:0;align-items:center}.history-row:hover .actions{opacity:1}mark{background:var(--hint-bg);color:inherit;border-radius:2px;padding:0 1px}
