:root{--bg: #0b0f17;--bg-elev: #131926;--bg-card: #1a2130;--bg-hover: #212a3b;--border: #263042;--text: #e6eaf2;--text-dim: #9aa6bd;--text-faint: #6b768c;--accent: #3b82f6;--accent-hover: #2f6fe0;--danger: #ef4444;--radius: 10px;--shadow: 0 4px 16px rgba(0, 0, 0, .35);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Apple SD Gothic Neo,Malgun Gothic,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);font-size:14px;font-weight:500;transition:background .12s,border-color .12s}.btn:hover{background:var(--bg-hover)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--bg-hover)}.btn-danger{color:var(--danger);border-color:transparent;background:transparent}.btn-danger:hover{background:#ef44441f}.btn-sm{padding:5px 10px;font-size:13px}input.field,textarea.field,select.field{width:100%;padding:9px 11px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:14px;outline:none}input.field:focus,textarea.field:focus,select.field:focus{border-color:var(--accent)}textarea.field{resize:vertical;min-height:80px}select.field,input.field,.fld-btn{height:40px}select.field{-moz-appearance:none;appearance:none;-webkit-appearance:none;padding-right:30px;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239aa6bd' stroke-width='2.2'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 11px center}.fld-btn{display:flex;align-items:center;justify-content:space-between;gap:6px;text-align:left;cursor:pointer;overflow:hidden;padding:9px 11px;background:var(--bg);border:1px solid var(--border);color:var(--text)}.fld-btn:hover{border-color:#35415a}.fld-btn.empty{color:var(--text-faint)}.fld-btn .chip{font-size:12px;padding:2px 9px}.fld-caret{flex:0 0 auto;color:var(--text-dim);font-size:11px;pointer-events:none}.login-wrap{height:100%;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{background:var(--bg-elev);border:1px solid var(--border);border-radius:16px;padding:44px 40px;text-align:center;max-width:380px;width:100%;box-shadow:var(--shadow)}.login-logo{font-size:26px;font-weight:800;letter-spacing:-.5px;margin-bottom:6px}.login-logo .dot{color:var(--accent)}.login-sub{color:var(--text-dim);font-size:14px;margin-bottom:30px}.app-header{height:56px;display:flex;align-items:center;gap:18px;padding:0 20px;border-bottom:1px solid var(--border);background:var(--bg-elev);position:sticky;top:0;z-index:20}.app-logo{font-weight:800;font-size:17px;letter-spacing:-.3px}.app-logo .dot{color:var(--accent)}.nav-tabs{display:flex;gap:4px}.nav-tab{padding:7px 14px;border-radius:8px;color:var(--text-dim);font-size:14px;font-weight:500;background:transparent;border:none}.nav-tab:hover{background:var(--bg-hover);color:var(--text)}.nav-tab.active{background:var(--bg-card);color:var(--text)}.header-right{margin-left:auto;display:flex;align-items:center;gap:12px}.avatar{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;font-weight:700;object-fit:cover}.board{display:flex;gap:14px;padding:18px 20px;align-items:flex-start;overflow-x:auto;height:calc(100vh - 56px)}.column{flex:0 0 300px;width:300px;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;display:flex;flex-direction:column;max-height:100%}.column.drag-over{border-color:var(--accent);background:var(--bg-card)}.column-head{display:flex;align-items:center;gap:8px;padding:12px 14px;font-weight:600;font-size:14px}.column-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.column-count{margin-left:auto;color:var(--text-faint);font-size:12px;font-weight:600;background:var(--bg-card);padding:1px 8px;border-radius:10px}.column-body{padding:0 10px 10px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;flex:1}.column-add{margin:4px 10px 12px;padding:8px;border-radius:8px;color:var(--text-dim);font-size:13px;border:1px dashed var(--border);background:transparent;text-align:center}.column-add:hover{background:var(--bg-hover);color:var(--text)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;padding:11px 12px;cursor:pointer;transition:border-color .12s,transform .04s}.card:hover{border-color:#35415a}.card:active{cursor:grabbing}.card.dragging{opacity:.45}.card-labels{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:7px}.chip{font-size:11px;font-weight:600;padding:2px 7px;border-radius:6px;color:#fff}.card-title{font-size:14px;font-weight:500;line-height:1.4}.card-meta{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.card-spacer{flex:1}.due{font-size:12px;color:var(--text-dim);display:inline-flex;align-items:center;gap:4px;background:var(--bg);padding:2px 8px;border-radius:6px}.due.overdue{color:#fca5a5;background:#ef44441f}.due.soon{color:#fcd34d}.prio-bar{width:3px;height:14px;border-radius:2px}.prio-low{background:#64748b}.prio-normal{background:#3b82f6}.prio-high{background:#f59e0b}.prio-urgent{background:#ef4444}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:3vh 16px;z-index:50;overflow:hidden}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:14px;width:100%;max-width:1080px;max-height:94vh;box-shadow:var(--shadow);animation:pop .12s ease-out;display:flex;flex-direction:column}.modal.modal-tall{height:88vh}@keyframes pop{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}.modal-head{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:14px 20px;border-bottom:1px solid var(--border)}.modal-head h3{margin:0;font-size:16px}.modal-title-input{flex:1;border:none;outline:none;background:transparent;color:var(--text);font-size:21px;font-weight:700;padding:4px 2px;font-family:inherit}.modal-title-input::placeholder{color:var(--text-faint);font-weight:600}.modal-x{flex:0 0 auto}.modal-body{flex:1;min-height:0;padding:18px 22px;display:flex;flex-direction:column;gap:16px;overflow:visible}.body-section{flex:1;min-height:0;display:flex;flex-direction:column;gap:6px}.body-section .be{flex:1;min-height:200px;overflow-y:auto}.prop-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.prop-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.prop-cell{min-width:0}.prop-cell .field{width:100%}@media (max-width: 820px){.prop-row{grid-template-columns:repeat(2,1fr)}}.ls{position:relative}.ls-chips{display:flex;gap:4px;overflow:hidden;flex:1;min-width:0}.ls-chips .chip{flex:0 0 auto}.ls-pop{position:absolute;top:100%;left:0;z-index:70;margin-top:4px;min-width:100%;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:6px;max-height:240px;overflow-y:auto}.ls-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:7px 9px;border-radius:7px;border:none;background:transparent;color:var(--text);font-size:13px;white-space:nowrap}.ls-opt:hover{background:var(--bg-hover)}.ls-opt.on{color:#fff}.ls-dot{width:10px;height:10px;border-radius:3px;flex:0 0 auto}.ls-check{margin-left:auto;color:var(--accent);font-weight:700}.modal-foot{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:14px 20px;border-top:1px solid var(--border)}.save-status{font-size:12px;color:var(--text-faint)}.field-label{display:block;font-size:12px;font-weight:600;color:var(--text-dim);margin-bottom:6px}.row{display:flex;gap:12px}.row>*{flex:1}.label-picker{display:flex;flex-wrap:wrap;gap:6px}.label-opt{font-size:12px;font-weight:600;padding:4px 9px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-dim)}.label-opt.on{color:#fff;border-color:transparent}.comment{display:flex;gap:9px;padding:9px 0;border-top:1px solid var(--border)}.comment-body{flex:1}.comment-author{font-size:13px;font-weight:600}.comment-time{font-size:11px;color:var(--text-faint);margin-left:6px}.comment-text{font-size:13px;color:var(--text);margin-top:2px;white-space:pre-wrap;word-break:break-word}.cal-wrap{padding:18px 20px}.cal-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.cal-title{font-size:18px;font-weight:700;min-width:160px}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:10px;overflow:hidden}.cal-dow{background:var(--bg-elev);text-align:center;padding:8px 0;font-size:12px;font-weight:600;color:var(--text-dim)}.cal-cell{background:var(--bg);min-height:108px;padding:6px;display:flex;flex-direction:column;gap:4px}.cal-cell.dim{background:var(--bg-elev)}.cal-cell.today .cal-date{background:var(--accent);color:#fff;border-radius:50%}.cal-date{font-size:12px;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-dim)}.cal-cell.sun .cal-date{color:#f87171}.cal-task{font-size:11px;padding:3px 6px;border-radius:5px;background:var(--bg-card);border-left:3px solid var(--accent);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-task:hover{background:var(--bg-hover)}.be{border:1px solid var(--border);border-radius:8px;background:var(--bg);padding:12px 14px;min-height:300px}.drf{position:relative}.drf-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drf-pop{position:absolute;top:100%;right:0;z-index:70;margin-top:4px;width:280px;background:var(--bg-elev);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);padding:12px}.drf-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.drf-title{font-size:14px;font-weight:700}.drf-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.drf-dow{text-align:center;font-size:11px;color:var(--text-dim);padding:2px 0}.drf-day{aspect-ratio:1;border:none;background:transparent;color:var(--text);font-size:12px;border-radius:6px;cursor:pointer}.drf-day:hover{background:var(--bg-hover)}.drf-day.dim{color:var(--text-faint)}.drf-day.in{background:#3b82f638;border-radius:0}.drf-day.edge{background:var(--accent);color:#fff;border-radius:6px;font-weight:700}.drf-foot{display:flex;justify-content:space-between;margin-top:8px}.be-row{position:relative;display:flex;align-items:flex-start;gap:6px;padding:1px 0}.be-presence{display:inline-flex;gap:2px;margin-top:3px;flex:0 0 auto}.be-editor-av{width:17px;height:17px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:8px;font-weight:700;box-shadow:0 0 0 2px var(--bg);animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.be-input{flex:1;width:100%;border:none;outline:none;background:transparent;color:var(--text);font-size:14px;line-height:1.55;resize:none;overflow:hidden;padding:2px 0;font-family:inherit}.be-input::placeholder{color:var(--text-faint)}.be-input-h1{font-size:22px;font-weight:800;line-height:1.3}.be-input-h2{font-size:18px;font-weight:700;line-height:1.3}.be-input-h3{font-size:15px;font-weight:700}.be-input-code{font-family:D2Coding,Consolas,ui-monospace,monospace;font-size:13px;background:var(--bg-elev);border-radius:6px;padding:8px 10px;white-space:pre}.be-quote{border-left:3px solid var(--accent);padding-left:8px}.be-quote .be-input{color:var(--text-dim);font-style:italic}.be-marker{color:var(--text-dim);font-size:14px;line-height:1.7;padding-top:2px;min-width:14px}.be-num{font-variant-numeric:tabular-nums}.be-check{margin-top:6px;width:15px;height:15px;accent-color:var(--accent);cursor:pointer;flex:0 0 auto}.be-done{color:var(--text-faint);text-decoration:line-through}.be-divider-row{padding:8px 0;cursor:pointer}.be-divider{border:none;border-top:1px solid var(--border);margin:0;width:100%}.be-hint{font-size:11px;color:var(--text-faint);margin-top:8px}.be-hint kbd{background:var(--bg-elev);border:1px solid var(--border);border-radius:4px;padding:0 5px;font-size:11px}.be-slash{position:absolute;top:100%;left:0;z-index:60;margin-top:2px;min-width:220px;background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);padding:6px;max-height:260px;overflow-y:auto}.be-slash-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:7px 9px;border-radius:7px;border:none;background:transparent;color:var(--text);font-size:13px}.be-slash-item.on{background:var(--bg-hover)}.be-slash-icon{width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-card);border:1px solid var(--border);border-radius:6px;font-size:12px;font-weight:700}.be-slash-empty{padding:8px 9px;color:var(--text-faint);font-size:13px}.calx-wrap{padding:18px 20px}.calx-dows{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:2px}.calx-dow{text-align:left;padding:6px 8px;font-size:12px;font-weight:600;color:var(--text-dim)}.calx-cal{border:1px solid var(--border);border-radius:10px;overflow:hidden}.calx-week{position:relative;border-bottom:1px solid var(--border)}.calx-week:last-child{border-bottom:none}.calx-cells{display:grid;grid-template-columns:repeat(7,1fr);height:100%}.calx-cell{border-right:1px solid var(--border);padding:4px 6px;cursor:pointer}.calx-cell:last-child{border-right:none}.calx-cell:hover,.calx-cell.dim{background:var(--bg-elev)}.calx-date{font-size:12px;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-dim)}.calx-cell.sun .calx-date{color:#f87171}.calx-date.today{background:var(--accent);color:#fff;border-radius:50%;font-weight:700}.calx-bar{position:absolute;margin-left:4px;display:flex;align-items:stretch;border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:8px;color:var(--text);cursor:grab;-webkit-user-select:none;user-select:none;overflow:hidden;touch-action:none;box-shadow:0 1px 3px #00000040}.calx-bar:hover{filter:brightness(1.12);border-color:#3a4661}.calx-bar.dragging{cursor:grabbing;box-shadow:0 4px 14px #00000080;z-index:5}.calx-bar.cont-l{border-top-left-radius:0;border-bottom-left-radius:0;border-left-width:0;margin-left:0}.calx-bar.cont-r{border-top-right-radius:0;border-bottom-right-radius:0}.calx-bar-main{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:6px;padding:8px 12px;overflow:hidden;pointer-events:none}.calx-bar-title{display:flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;overflow:hidden;line-height:1.25;flex:0 0 auto}.calx-bar-labels,.calx-bar-who{flex:0 0 auto}.calx-bar-titletext{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calx-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.calx-bar-labels{display:flex;gap:5px;overflow:hidden}.calx-bar-chip{font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;color:#fff;flex:0 0 auto;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calx-bar-who{display:flex;align-items:center;gap:6px;overflow:hidden}.calx-bar-av{width:21px;height:21px;border-radius:50%;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-weight:700}.calx-bar-who-name{font-size:12px;color:var(--text-dim);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calx-handle{width:10px;flex:0 0 auto;cursor:ew-resize}.calx-handle:hover{background:#fff3}.team-list{display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow-y:auto}.team-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:9px;background:var(--bg)}.team-row.inactive{opacity:.55}.team-name{font-size:14px;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.team-email{font-size:12px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.team-badge{font-size:10px;font-weight:700;padding:1px 6px;border-radius:5px}.team-badge.admin{background:#a855f733;color:#c084fc}.team-badge.pending{background:#f59e0b33;color:#fbbf24}.team-badge.off{background:#ef44442e;color:#fca5a5}.team-badge.me{background:var(--bg-hover);color:var(--text-dim)}.team-actions{display:flex;gap:4px;flex:0 0 auto}.center-msg{display:flex;align-items:center;justify-content:center;height:60vh;color:var(--text-dim)}.spinner{width:26px;height:26px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 640px){.board{padding:12px}.column{flex-basis:84vw;width:84vw}.cal-cell{min-height:72px}.nav-tab{padding:7px 10px}}
