:root{--bg: #0f172a;--surface: #1e293b;--surface-2: #334155;--text: #f1f5f9;--muted: #94a3b8;--accent: #3b82f6;--danger: #ef4444;--ok: #22c55e}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent}.loading{display:grid;place-items:center;height:100%;color:var(--muted)}.login-page{display:grid;place-items:center;height:100%;padding:1rem}.login-card{background:var(--surface);border-radius:16px;padding:2rem;width:100%;max-width:360px;display:flex;flex-direction:column;gap:1rem;box-shadow:0 10px 40px #0006}.login-card h1{font-size:1.5rem;text-align:center;color:var(--accent)}.login-card label{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--muted)}.login-card input{padding:.75rem .9rem;border-radius:10px;border:1px solid var(--surface-2);background:var(--bg);color:var(--text);font-size:1rem}.login-card input:focus{outline:2px solid var(--accent)}.login-card button{padding:.8rem;border:none;border-radius:10px;background:var(--accent);color:#fff;font-size:1rem;font-weight:600;cursor:pointer}.login-card button:disabled{opacity:.6}.error{background:#ef444426;color:var(--danger);padding:.6rem .8rem;border-radius:8px;font-size:.85rem}.dashboard{height:100%;display:flex;flex-direction:column}.topbar{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--surface-2)}.topbar h1{font-size:1.1rem;color:var(--accent)}.user{display:flex;align-items:center;gap:.75rem;color:var(--muted)}.user button{padding:.4rem .8rem;border:1px solid var(--surface-2);border-radius:8px;background:transparent;color:var(--text);cursor:pointer}.board{flex:1;padding:1.25rem;overflow:auto}.placeholder{color:var(--muted)}.muted{color:var(--muted);font-size:.9rem}.count{color:var(--muted);font-size:.8rem;margin-top:1rem;text-align:center}.toolbar{display:flex;gap:.5rem;padding:.75rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--surface-2);align-items:center;flex-wrap:wrap}.search{flex:1;min-width:180px;padding:.65rem .9rem;border-radius:10px;border:1px solid var(--surface-2);background:var(--bg);color:var(--text);font-size:1rem}.search:focus{outline:2px solid var(--accent)}.tagmode{padding:.6rem .7rem;border-radius:10px;border:1px solid var(--surface-2);background:var(--bg);color:var(--text);font-size:.9rem}.new-btn{white-space:nowrap}.btn-primary{padding:.65rem 1.1rem;border:none;border-radius:10px;background:var(--accent);color:#fff;font-size:.95rem;font-weight:600;cursor:pointer}.btn-primary:disabled{opacity:.6}.btn-ghost{padding:.65rem 1.1rem;border:1px solid var(--surface-2);border-radius:10px;background:transparent;color:var(--text);font-size:.95rem;cursor:pointer}.icon-btn{width:32px;height:32px;border:none;border-radius:8px;background:transparent;color:var(--muted);font-size:1.3rem;line-height:1;cursor:pointer;display:grid;place-items:center}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn.danger:hover{background:#ef444433;color:var(--danger)}.tagbar{display:flex;gap:.5rem;padding:.6rem 1.25rem;background:var(--surface);border-bottom:1px solid var(--surface-2);align-items:center;overflow-x:auto}.tagbar-chips{display:flex;gap:.4rem;flex:1;flex-wrap:wrap}.chip{padding:.35rem .8rem;border-radius:999px;border:1px solid var(--surface-2);background:transparent;color:var(--text);font-size:.8rem;cursor:pointer;white-space:nowrap;transition:all .15s}.chip-active{color:#fff!important}.chip-ghost{border-style:dashed;color:var(--muted)}.todo-list{display:flex;flex-direction:column;gap:.6rem;max-width:760px;margin:0 auto}.todo-item{display:flex;gap:.75rem;align-items:flex-start;background:var(--surface);border:1px solid var(--surface-2);border-radius:12px;padding:.9rem 1rem;min-height:56px;touch-action:none}.todo-item.done{opacity:.55}.todo-item.dragging{z-index:50;box-shadow:0 12px 30px #00000080;border-color:var(--accent);opacity:.95}.drag-handle{flex-shrink:0;width:28px;height:28px;margin-top:2px;border:none;border-radius:6px;background:transparent;color:var(--muted);font-size:1.2rem;line-height:1;cursor:grab;display:grid;place-items:center;touch-action:none;user-select:none;-webkit-user-select:none}.drag-handle:active{cursor:grabbing;color:var(--accent)}.check{flex-shrink:0;width:26px;height:26px;margin-top:2px;border:2px solid var(--surface-2);border-radius:7px;background:transparent;color:#fff;font-size:.9rem;cursor:pointer;display:grid;place-items:center}.todo-item.done .check{background:var(--ok);border-color:var(--ok)}.todo-main{flex:1;min-width:0;cursor:pointer}.todo-title{font-size:1rem;line-height:1.3;word-break:break-word}.todo-item.done .todo-title{text-decoration:line-through}.todo-desc{font-size:.85rem;color:var(--muted);margin-top:.25rem;white-space:pre-wrap;word-break:break-word}.todo-meta{display:flex;gap:.5rem;margin-top:.5rem;flex-wrap:wrap;align-items:center}.meta-dates,.meta-alarm{font-size:.75rem;color:var(--muted)}.meta-alarm{color:var(--accent)}.todo-tag{font-size:.7rem;padding:.15rem .55rem;border-radius:999px;font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center;padding:1rem;z-index:100;overflow:auto}.modal-card{background:var(--surface);border-radius:16px;padding:1.5rem;width:100%;max-width:480px;max-height:90vh;overflow:auto;display:flex;flex-direction:column;gap:1rem;box-shadow:0 20px 60px #00000080}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h2{font-size:1.2rem;color:var(--accent)}.field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;color:var(--muted)}.field input,.field textarea{padding:.65rem .8rem;border-radius:10px;border:1px solid var(--surface-2);background:var(--bg);color:var(--text);font-size:1rem;font-family:inherit;resize:vertical}.field input:focus,.field textarea:focus{outline:2px solid var(--accent)}.field-row{display:flex;gap:.75rem}.field-row .field{flex:1}.checkbox-field{flex-direction:row!important;align-items:center;gap:.5rem;color:var(--text)}.checkbox-field input{width:18px;height:18px}.tag-pick{display:flex;gap:.4rem;flex-wrap:wrap}.tag-form{display:flex;flex-direction:column;gap:.75rem}.color-row{display:flex;gap:.4rem;flex-wrap:wrap}.swatch{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer}.swatch-active{border-color:#fff;box-shadow:0 0 0 2px var(--bg),0 0 0 4px currentColor}.tag-list{display:flex;flex-direction:column;gap:.4rem;border-top:1px solid var(--surface-2);padding-top:1rem}.tag-row{display:flex;align-items:center;gap:.6rem;padding:.4rem .5rem;border-radius:8px;background:var(--bg)}.tag-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0}.tag-row-name{flex:1;font-size:.9rem}.modal-foot{display:flex;gap:.6rem;justify-content:flex-end}.attachments{border-top:1px solid var(--surface-2);padding-top:1rem;display:flex;flex-direction:column;gap:.6rem}.att-head{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:var(--muted)}.att-add{padding:.35rem .8rem;font-size:.8rem}.att-progress{height:6px;background:var(--surface-2);border-radius:999px;overflow:hidden}.att-bar{height:100%;background:var(--accent);transition:width .15s}.att-list{display:flex;flex-direction:column;gap:.35rem}.att-row{display:flex;align-items:center;gap:.6rem;padding:.45rem .6rem;background:var(--bg);border-radius:8px}.att-name{flex:1;text-align:left;background:transparent;border:none;color:var(--accent);cursor:pointer;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att-name:hover{text-decoration:underline}.att-size{font-size:.75rem;color:var(--muted);flex-shrink:0}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.blink{animation:blink 1s ease-in-out infinite}.alarm-banner{background:var(--danger);color:#fff;padding:.6rem 1.25rem;font-size:.85rem;font-weight:600;text-align:center}.todo-item.alarm-blink{border-color:var(--danger);animation:alarmPulse 1.2s ease-in-out infinite}@keyframes alarmPulse{0%,to{border-color:var(--danger);box-shadow:0 0 #ef444466}50%{border-color:#fca5a5;box-shadow:0 0 0 4px #ef444426}}
