:root{--bg: #f6f7f9;--card: #fff;--text: #1b1f24;--muted: #6a737d;--line: #d8dde3;--accent: #1f6feb;--danger: #cf222e;--late-bg: #fff1f0;--ok: #1a7f37;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #0d1117;--card: #161b22;--text: #e6edf3;--muted: #8b949e;--line: #30363d;--accent: #4493f8;--danger: #ff7b72;--late-bg: #2d1517;--ok: #3fb950}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,Hiragino Sans,Yu Gothic UI,sans-serif}#app{max-width:720px;margin:0 auto;padding:0 16px calc(96px + env(safe-area-inset-bottom))}button,input,select,textarea{font:inherit;color:inherit}button{min-height:44px;padding:0 14px;border:1px solid var(--line);border-radius:8px;background:var(--card);cursor:pointer}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.danger{color:var(--danger)}button.link{border:0;background:none;color:var(--accent)}button:disabled{opacity:.5}input,select,textarea{width:100%;min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card)}label{display:block;margin:10px 0;font-size:14px;color:var(--muted)}label>input,label>select,label>textarea{margin-top:4px;color:var(--text);font-size:16px}label.check{display:flex;align-items:center;gap:8px;color:var(--text)}label.check input{width:auto;min-height:0}.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px}.login{margin-top:15vh}.login h1{margin:0 0 8px}.login button[type=submit]{width:100%;margin-top:8px}.msg{min-height:1.2em;margin:8px 0;font-size:14px;color:var(--muted)}.msg.error{color:var(--danger)}.top{position:sticky;top:0;z-index:5;display:flex;gap:8px;align-items:center;padding:calc(8px + env(safe-area-inset-top)) 0 8px;background:var(--bg);flex-wrap:wrap}.project-select{flex:1 1 160px;width:auto;font-weight:600}.kind{margin:4px 0;font-size:13px;color:var(--muted)}.tabs{display:flex;gap:6px;margin:8px 0;overflow-x:auto}.tabs button{flex:none;min-height:36px;border-radius:18px}.tabs button.on{background:var(--accent);border-color:var(--accent);color:#fff}.tasks{list-style:none;margin:0;padding:0;display:grid;gap:8px}.task{padding:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;cursor:pointer}.task.late{background:var(--late-bg);border-color:var(--danger)}.task.done{opacity:.6}.task-main{display:flex;gap:8px;align-items:baseline}.task .seq{color:var(--muted);font-size:13px}.task .title{flex:1;font-weight:600;word-break:break-word}.pri{font-size:12px;padding:0 8px;border-radius:10px;border:1px solid var(--line)}.pri.p1{color:var(--danger);border-color:var(--danger)}.task-meta{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;margin-top:6px;font-size:14px;color:var(--muted)}.due.late{color:var(--danger);font-weight:600}.blocked{color:var(--danger)}.task .status{width:auto;min-height:36px;margin-left:auto}.status.doing{border-color:var(--accent)}.status.done{border-color:var(--ok)}.note{margin:6px 0 0;font-size:14px;color:var(--muted);white-space:pre-wrap;word-break:break-word}.empty,.empty-note,.loading{margin-top:24px;text-align:center;color:var(--muted)}.fab-wrap{position:sticky;bottom:calc(16px + env(safe-area-inset-bottom));display:flex;justify-content:flex-end;margin-top:12px;pointer-events:none}.fab{pointer-events:auto;box-shadow:0 4px 14px #00000040;border-radius:24px;padding:0 20px}dialog.sheet{width:min(560px,100vw - 24px);max-height:90dvh;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--text)}dialog.sheet::backdrop{background:#00000073}dialog h2{margin:0 0 8px;font-size:18px}dialog h3{margin:16px 0 4px;font-size:15px}.row{display:flex;gap:8px}.row>*{flex:1;min-width:0}.row.inline{align-items:flex-start}.row.inline button{flex:none}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.list{list-style:none;margin:0 0 8px;padding:0}.list li{display:flex;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}.list .grow{flex:1;min-width:0}.list small{display:block;color:var(--muted)}.list select{width:auto}
