:root{--accent: #6e4cff;--accent-dark: #5a3ae6;--accent-soft: #f0ecff;--bg: #f7f8fc;--surface: #ffffff;--surface-glass: rgba(255, 255, 255, .72);--border: #e6e8f2;--text: #252a3a;--muted: #7c829a;--danger: #e5484d;--green: #2fa86a;--shadow: 0 1px 2px rgba(20, 22, 40, .04), 0 12px 38px rgba(20, 22, 40, .07);--shadow-soft: 0 1px 2px rgba(20, 22, 40, .03), 0 8px 30px rgba(20, 22, 40, .06);--radius: 18px;--font-body: "Nunito", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display: "Baloo 2", "Nunito", sans-serif;font-family:var(--font-body)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(900px 540px at 90% -6%,rgba(110,76,255,.15),transparent 60%),radial-gradient(760px 540px at 4% 106%,rgba(86,124,255,.12),transparent 60%),var(--bg);background-attachment:fixed;color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased}h1,h2,h3,.brand-name,.group-name,.section-title{font-family:var(--font-display);letter-spacing:.01em}h1{font-size:1.7rem;margin:0 0 .2rem}h2{font-size:1.2rem}h3{margin:0}.muted{color:var(--muted)}.small{font-size:.82rem}.btn{border:1px solid transparent;border-radius:9px;padding:.55rem .95rem;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease;white-space:nowrap}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-dark)}.btn-secondary{background:var(--accent-soft);color:var(--accent-dark)}.btn-secondary:hover{background:#ddd6ff}.btn-ghost{background:transparent;border-color:var(--border);color:var(--text)}.btn-ghost:hover{background:#f0f1f6}.btn-block{width:100%}.btn.small{padding:.35rem .6rem;font-size:.8rem}.btn:disabled{opacity:.6;cursor:default}.link{background:none;border:none;color:var(--accent);cursor:pointer;font-weight:600;padding:0}.icon-btn{border:none;background:transparent;color:var(--muted);font-size:1.1rem;cursor:pointer;border-radius:7px;width:28px;height:28px;line-height:1}.icon-btn:hover{background:#f0f1f6;color:var(--text)}.icon-btn.danger:hover{background:#fdecec;color:var(--danger)}.screen-center{min-height:100%;display:grid;place-items:center;padding:2rem}.config-warning{max-width:460px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;box-shadow:var(--shadow)}code{background:#f0f1f6;padding:.1rem .35rem;border-radius:5px;font-size:.85em}.auth-screen{min-height:100%;display:grid;place-items:center;padding:2rem;background:radial-gradient(760px 460px at 84% 4%,rgba(110,76,255,.22),transparent 60%),radial-gradient(680px 460px at 8% 100%,rgba(86,124,255,.16),transparent 60%),var(--bg)}.auth-card{width:100%;max-width:400px;background:var(--surface-glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:22px;padding:2.4rem 2.2rem;box-shadow:var(--shadow)}.auth-brand{text-align:center;margin-bottom:1.5rem}.auth-brand h1{margin:.6rem 0 .1rem}.brand-logo{display:inline-grid;place-items:center;width:34px;height:34px;background:linear-gradient(135deg,#6f53ff,#4a30d4);color:#fff;border-radius:11px;font-family:var(--font-display);font-weight:800;font-size:1.2rem;box-shadow:0 2px 8px #5b3df559}.brand-logo.big{width:56px;height:56px;font-size:2rem;border-radius:16px}.brand-logo-img{height:28px;width:auto;display:block}.brand-logo-img.big{height:92px;margin:0 auto .4rem}.brand-accent{color:var(--accent)}.auth-toggle{display:flex;background:#f0f1f6;border-radius:10px;padding:4px;margin-bottom:1.25rem}.auth-toggle button{flex:1;border:none;background:transparent;padding:.5rem;border-radius:7px;font-weight:600;color:var(--muted);cursor:pointer}.auth-toggle button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #00000014}.auth-form,.stack{display:flex;flex-direction:column;gap:.85rem}label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:600;color:var(--muted)}input,select{font:inherit;padding:.6rem .7rem;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--text);outline:none}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.auth-footer{text-align:center;margin-top:1.2rem;font-size:.9rem}.alert{padding:.6rem .8rem;border-radius:9px;font-size:.85rem}.alert-error{background:#fdecec;color:#b42318}.alert-info{background:var(--accent-soft);color:var(--accent-dark)}.password-field{position:relative;display:flex}.password-field input{width:100%;padding-right:2.7rem}.eye-btn{position:absolute;right:5px;top:50%;transform:translateY(-50%);border:none;background:transparent;cursor:pointer;font-size:1.05rem;line-height:1;padding:5px 7px;border-radius:8px}.eye-btn:hover{background:#f0f1f6}.topbar{background:#ffffffb3;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.topbar-inner{max-width:none;margin:0 auto;padding:0 1.75rem;display:flex;align-items:center;gap:1.25rem;height:60px}.brand{display:flex;align-items:center;gap:.35rem;text-decoration:none;color:var(--text);font-weight:800}.brand-name{font-size:1.25rem;font-weight:700}.tabs{display:flex;gap:.25rem;flex:1;overflow-x:auto}.tab{text-decoration:none;color:var(--muted);padding:.4rem .75rem;border-radius:8px;font-weight:600;font-size:.9rem;white-space:nowrap}.tab:hover{background:#f0f1f6;color:var(--text)}.tab.active{background:var(--accent-soft);color:var(--accent-dark)}.tab-admin{color:var(--accent)}.user-menu{display:flex;align-items:center;gap:.6rem}.avatar{width:34px;height:34px;border-radius:50%;border:none;padding:0;cursor:pointer;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:700;font-size:.8rem;font-family:var(--font-body);transition:transform .12s ease}.avatar:hover{transform:scale(1.06)}.avatar.small{width:30px;height:30px}.avatar.ghost{background:#c9cce0}.content{max-width:none;margin:0 auto;padding:1.5rem 1.75rem 4rem}.page{display:flex;flex-direction:column;gap:1.2rem}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.head-actions{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.section-title{margin:0 0 .8rem}.section-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.8rem}.section-head .section-title{margin:0}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}.project-card{text-align:left;background:var(--surface-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius);padding:1.3rem;cursor:pointer;box-shadow:var(--shadow-soft);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease;display:flex;flex-direction:column;gap:.5rem}.project-card:hover{transform:translateY(-2px);border-color:#d9d3ff;box-shadow:var(--shadow)}.card-desc{font-size:.85rem;margin:0}.card-stats{display:flex;align-items:center;gap:.6rem;margin-top:.3rem}.badge{font-size:.78rem;font-weight:700;padding:.2rem .55rem;border-radius:20px}.badge-pending{background:#fff1e6;color:#c4630a}.badge-done{background:#e7f6ee;color:var(--green)}.add-card{align-items:center;justify-content:center;gap:.3rem;border:1.5px dashed var(--border);background:transparent;box-shadow:none;color:var(--muted);font-family:var(--font-display);font-weight:600;min-height:116px}.add-card:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dark)}.add-card-plus{font-size:2rem;font-family:var(--font-display);line-height:1}.empty-card{background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);padding:2rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.8rem}.project-title{display:flex;flex-direction:column;gap:.15rem}.project-h1{display:inline-flex;align-items:flex-end;gap:.35rem}.pencil-btn{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:.95rem;padding:2px 6px;border-radius:7px;margin-bottom:.3rem;line-height:1}.pencil-btn:hover{background:var(--accent-soft);color:var(--accent-dark)}.project-name-input.editing{font-family:var(--font-display);font-size:1.7rem;font-weight:700;padding:.15rem .5rem;border:1px solid var(--accent);border-radius:9px;box-shadow:0 0 0 3px var(--accent-soft);max-width:440px}.partners-mini{width:100%;display:flex;flex-direction:column;align-items:flex-end;gap:0;text-align:right;padding-right:.1rem}.partner-mini{font-size:.78rem;color:var(--muted);line-height:1.3}.partner-mini.pending{font-style:italic;opacity:.8}.comment-card{background:var(--surface-glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border);border-radius:var(--radius);padding:.8rem 1rem 1rem;box-shadow:var(--shadow-soft)}.comment-head{display:flex;align-items:baseline;gap:.6rem;padding:.2rem .3rem .6rem}.comment-area{width:100%;min-height:90px;max-height:calc(31.5em + 1.5rem + 2px);border:1px solid var(--border);border-radius:12px;padding:.75rem .85rem;font-family:var(--font-body);font-size:.9rem;line-height:1.5;background:#fff9;color:var(--text);resize:none;overflow-y:auto;outline:none}.comment-area:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.task-board{display:flex;flex-direction:column;gap:1.5rem}.group-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .5rem .25rem;box-shadow:var(--shadow)}.group-head{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem}.group-name{font-size:1rem;font-weight:700}.group-name-input{border:1px solid transparent;background:transparent;font-weight:700;font-size:1rem;padding:.25rem .4rem;border-radius:7px;flex:1;max-width:320px}.group-name-input:hover{border-color:var(--border)}.task-list{list-style:none;margin:0;padding:0}.task-list.flat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.25rem .5rem;box-shadow:var(--shadow)}.task-row{display:flex;align-items:center;gap:.7rem;padding:.28rem .6rem;border-radius:9px;transition:background .12s ease}.task-row:hover{background:#6e4cff0a}.task-num{flex:none;width:20px;text-align:right;color:var(--muted);font-size:.76rem;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}.list-toolbar .t-num{width:20px;flex:none}.drag-handle{flex:none;cursor:move;color:#c6cadb;font-size:1rem;line-height:1;padding:0 2px;-webkit-user-select:none;user-select:none}.drag-handle:hover{color:var(--accent)}.task-row.drag-over{box-shadow:inset 0 2px 0 0 var(--accent)}.list-toolbar .t-reorder{width:16px;flex:none}.check{flex:none;width:20px;height:20px;border-radius:6px;border:1.5px solid #d4d7e6;background:#fff9;cursor:pointer;display:grid;place-items:center;color:#fff;font-size:.72rem;font-weight:700;transition:border-color .12s ease,background .12s ease}.check:hover{border-color:var(--accent)}.check.checked{background:var(--green);border-color:var(--green)}.task-title{flex:1}.task-title-input{flex:1;border:1px solid transparent;background:transparent;padding:.3rem .4rem;border-radius:7px;min-width:0;font:inherit;line-height:1.4;resize:none;overflow:hidden;display:block}.task-title-input:hover{border-color:var(--border)}.task-row.done .task-title-input,.task-row.done .task-title{text-decoration:line-through;color:var(--muted)}.cell-select{flex:none;font-size:.8rem;padding:.34rem 1.55rem .34rem .75rem;color:var(--muted);border:1px solid var(--border);border-radius:999px;background-color:#fbfbfe;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M2 4l3 3 3-3' fill='none' stroke='%237C829A' stroke-width='1.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .62rem center;appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer;text-overflow:ellipsis;transition:border-color .12s ease,background-color .12s ease,color .12s ease}.cell-select:hover{border-color:#d9d3ff}.tag-select.has-value{background-color:var(--accent-soft);color:var(--accent-dark);border-color:#e2dbff}.assignee-select.has-value{background-color:#eef1f8;color:#4b5270;border-color:#dfe3ef}.add-task-row{display:flex;align-items:center;gap:.7rem;padding:.28rem .6rem;margin-top:.1rem;border-radius:9px;transition:background .12s ease}.add-task-row:hover{background:#6e4cff0a}.add-task-row .add-plus{color:var(--muted);font-weight:400;font-size:1.15rem;width:20px;text-align:center;line-height:1}.add-task-row input{flex:1;border:1px solid transparent;background:transparent;color:var(--muted);padding:.2rem .4rem;border-radius:8px}.add-task-row input::placeholder{color:var(--muted);opacity:.85}.add-task-row input:focus{color:var(--text)}.task-table{background:var(--surface-glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--border);border-radius:var(--radius);padding:.35rem .8rem .3rem;box-shadow:var(--shadow)}.list-toolbar{display:flex;align-items:center;gap:.7rem;padding:.5rem .6rem;border-bottom:1px solid var(--border);margin-bottom:.2rem}.list-toolbar .t-check{width:22px;flex:none}.list-toolbar .t-title{flex:1;font-weight:700}.list-toolbar .t-del{width:28px;flex:none}.assignee-select,.filter-assignee{width:124px;flex:none;max-width:none}.color-select,.filter-color{width:64px;flex:none;max-width:none}.color-select.color-blue,.filter-color.color-blue{background-color:#e8f0fe;color:#1d4ed8;border-color:#cfe0fd}.color-select.color-orange,.filter-color.color-orange{background-color:#fff3e6;color:#c4630a;border-color:#ffe0c2}.color-select.color-red,.filter-color.color-red{background-color:#fdecec;color:#c81e1e;border-color:#f6d2d2}.color-dot{flex:none;width:16px;height:16px;border-radius:50%;border:1px solid rgba(0,0,0,.08);padding:0;cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}.color-dot.color-blue{background:#3b82f6}.color-dot.color-orange{background:#f97316}.color-dot.color-red{background:#ef4444}.color-dot:hover{transform:scale(1.18)}.color-filter{display:flex;align-items:center;gap:.35rem;flex:none}.color-filter .color-dot.active{transform:scale(1.18);box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px #9aa0b4}.cell-input{font-size:.8rem;padding:.34rem .75rem;border:1px solid var(--accent);background:#fff;border-radius:999px;color:var(--text)}.empty-row{padding:.7rem .5rem;list-style:none}.filter-bar{padding:0 .8rem;margin-bottom:-1.2rem}.filter-bar .list-toolbar{border-bottom:none;margin-bottom:0;padding-bottom:0}.family-head{display:flex;align-items:center;gap:.5rem;padding:.2rem .4rem .3rem}.family-drag{font-size:1.05rem}.family-box.fam-drag-over{box-shadow:var(--shadow),inset 0 3px 0 0 var(--accent)}.family-box.fam-drag-over .family-head{padding-top:.45rem}.family-name-input{flex:1;border:1px solid transparent;background:transparent;font-family:var(--font-display);font-weight:700;font-size:1.05rem;padding:.25rem .45rem;border-radius:8px;max-width:380px}.family-name-input:hover{border-color:var(--border)}.family-name-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.add-family{display:flex;align-items:center;justify-content:center;gap:.4rem;width:100%;border:1.5px dashed var(--border);background:transparent;color:var(--muted);font-family:var(--font-display);font-weight:600;border-radius:var(--radius);padding:.9rem;cursor:pointer;transition:all .14s ease}.add-family:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-dark)}.mytasks-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.mytasks-head{padding:.2rem .4rem .35rem}.mytasks-title{border:none;background:transparent;cursor:pointer;font-family:var(--font-display);font-weight:700;font-size:1rem;color:var(--text);padding:.1rem .2rem}.mytasks-title:hover{color:var(--accent)}.mytasks-box .task-title{overflow-wrap:anywhere}.chip{font-size:.75rem;font-weight:600;padding:.15rem .5rem;border-radius:20px;background:#f0f1f6;color:var(--muted);border:none}.chip.tiny{font-size:.65rem;margin-left:.4rem;background:var(--accent-soft);color:var(--accent-dark)}.chip-link{cursor:pointer}.chip-link:hover,.chip-admin{background:var(--accent-soft);color:var(--accent-dark)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14162866;display:grid;place-items:center;padding:1rem;z-index:50}.modal{background:var(--surface);border:1px solid var(--border);border-radius:20px;width:100%;max-width:420px;box-shadow:0 20px 60px #1416282e;overflow:hidden}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.2rem;border-bottom:1px solid var(--border)}.modal-body{padding:1.2rem}.modal-foot{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.4rem}.members-panel{display:flex;flex-direction:column;gap:1rem}.add-member{display:flex;gap:.5rem}.add-member input{flex:1}.member-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}.member-item{display:flex;align-items:center;justify-content:space-between;padding:.4rem .3rem;border-radius:8px}.member-item:hover{background:#f7f8fc}.member-item.pending{opacity:.85}.member-id{display:flex;align-items:center;gap:.6rem}.member-name{font-weight:600;font-size:.9rem}.stat-row{display:flex;gap:1rem;flex-wrap:wrap}.stat-card{flex:1;min-width:160px;background:var(--surface-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius);padding:1.2rem 1.4rem;box-shadow:var(--shadow-soft)}.stat-num{font-family:var(--font-display);font-size:2.2rem;font-weight:800;color:var(--accent-dark);line-height:1;margin-bottom:.3rem}.admin-users{display:flex;flex-direction:column;gap:.5rem}.admin-user-block{background:var(--surface-glass);border:1px solid var(--border);border-radius:12px;padding:.7rem .9rem;box-shadow:var(--shadow-soft)}.admin-user-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}.admin-project-row{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.table-card{background:var(--surface-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-soft)}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table th,.data-table td{text-align:left;padding:.7rem 1rem;border-bottom:1px solid var(--border)}.data-table th{color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}.data-table tr:last-child td{border-bottom:none}.right{text-align:right}@media (max-width: 640px){.cell-select{max-width:110px}.assignee-select,.filter-assignee{width:104px}.tag-select,.tag-input,.filter-tag{width:88px}.topbar-inner{gap:.6rem}}
