:root{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #f4f5f7;--surface-3: #eceef1;--text: #17171a;--text-muted: #62636b;--text-soft: #9a9ba3;--border: #e8e9ed;--border-strong: #d8dae0;--c-home: #2563eb;--c-home-soft: #eaf1fe;--c-shop: #0d9488;--c-shop-soft: #e5f7f4;--c-task: #7c3aed;--c-task-soft: #f2ecfe;--c-vault: #d97706;--c-vault-soft: #fdf1e0;--c-dates: #e11d48;--c-dates-soft: #fdeaee;--c-people: #0891b2;--c-people-soft: #e4f6fa;--accent: var(--c-home);--accent-soft: var(--c-home-soft);--accent-ring: rgba(37, 99, 235, .18);--ok: #059669;--ok-soft: #e7f6f0;--warn: #d97706;--warn-soft: #fdf1e0;--bad: #dc2626;--bad-soft: #fdeceb;--info: #2563eb;--info-soft: #eaf1fe;--r-xs: 8px;--r-sm: 10px;--r: 14px;--r-lg: 20px;--r-xl: 26px;--r-pill: 999px;--sh-xs: 0 1px 2px rgba(16, 18, 27, .04);--sh-sm: 0 1px 3px rgba(16, 18, 27, .05), 0 1px 2px rgba(16, 18, 27, .03);--sh: 0 4px 16px rgba(16, 18, 27, .07);--sh-lg: 0 24px 60px rgba(16, 18, 27, .18);--sidebar-w: 254px;--topbar-h: 64px;--t: .15s cubic-bezier(.4, 0, .2, 1)}.dashboard{--accent: var(--c-home);--accent-soft: var(--c-home-soft);--accent-ring: rgba(37, 99, 235, .18)}.shopping-page{--accent: var(--c-shop);--accent-soft: var(--c-shop-soft);--accent-ring: rgba(13, 148, 136, .18)}.tasks-page{--accent: var(--c-task);--accent-soft: var(--c-task-soft);--accent-ring: rgba(124, 58, 237, .18)}.vault-page{--accent: var(--c-vault);--accent-soft: var(--c-vault-soft);--accent-ring: rgba(217, 119, 6, .18)}.reminders-page{--accent: var(--c-dates);--accent-soft: var(--c-dates-soft);--accent-ring: rgba(225, 29, 72, .18)}.users-page{--accent: var(--c-people);--accent-soft: var(--c-people-soft);--accent-ring: rgba(8, 145, 178, .18)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{direction:rtl;font-family:Assistant,Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow:hidden}h1,h2,h3,h4{margin:0 0 .4em;font-weight:700;color:var(--text);letter-spacing:-.02em}h1{font-size:1.75rem}h2{font-size:1.15rem}a{color:var(--accent);text-decoration:none}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#d3d5dc;border-radius:var(--r-pill);border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#b9bcc6;background-clip:content-box}app-root{display:block;height:100%}.shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);height:100vh;height:100dvh}.shell-main{display:flex;flex-direction:column;min-width:0;min-height:0}.shell-main>router-outlet+*{display:block;flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:26px clamp(18px,3vw,36px) 48px;scroll-behavior:smooth}.shell-bare{display:block;height:100vh;height:100dvh;overflow:auto}@media (max-width: 960px){.shell{grid-template-columns:minmax(0,1fr)}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--sh-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-family:inherit;font-size:.92rem;font-weight:600;line-height:1;padding:10px 16px;border-radius:var(--r-sm);border:1px solid transparent;cursor:pointer;transition:var(--t);white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.98)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--accent-ring)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){filter:brightness(.93)}.btn-ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-ghost:hover:not(:disabled){background:var(--surface-2);border-color:var(--text-soft)}.btn-soft{background:var(--accent-soft);color:var(--accent)}.btn-soft:hover:not(:disabled){filter:brightness(.96)}.btn-danger{background:var(--bad);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(.93)}.btn-sm{padding:8px 13px;font-size:.85rem}.btn-icon{padding:0;width:32px;height:32px;border-radius:var(--r-xs);background:transparent;border-color:transparent;color:var(--text-soft)}.btn-icon:hover:not(:disabled){background:var(--surface-3);color:var(--text);border-color:transparent}.btn-icon.danger:hover:not(:disabled){background:var(--bad-soft);color:var(--bad)}.field{display:flex;flex-direction:column;gap:6px}.field>label,.form-label{font-size:.82rem;font-weight:600;color:var(--text-muted)}.input,input.input,select.input,textarea.input{width:100%;font-family:inherit;font-size:.94rem;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:10px 13px;transition:var(--t)}.input:hover:not(:focus){border-color:var(--text-soft)}.input:focus,input.input:focus,select.input:focus,textarea.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.input::placeholder{color:var(--text-soft)}.check{display:flex;align-items:center;gap:9px;font-size:.9rem;font-weight:500;cursor:pointer}.check input{width:17px;height:17px;accent-color:var(--accent);cursor:pointer}.badge{display:inline-flex;align-items:center;gap:5px;font-size:.76rem;font-weight:600;padding:3px 10px;border-radius:var(--r-pill);line-height:1.5;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-success{background:var(--ok-soft);color:#04785d}.badge-warning{background:var(--warn-soft);color:#a85c04}.badge-danger{background:var(--bad-soft);color:#b91c1c}.badge-info{background:var(--info-soft);color:#1d4ed8}.badge-primary{background:var(--accent-soft);color:var(--accent)}.badge-neutral{background:var(--surface-3);color:var(--text-muted)}.badge-plain:before{display:none}.table-card{overflow:hidden;padding:0}.data-table{width:100%;border-collapse:collapse;font-size:.92rem}.data-table thead th{text-align:right;font-size:.75rem;font-weight:600;letter-spacing:.03em;color:var(--text-soft);background:transparent;padding:12px 18px;border-bottom:1px solid var(--border);white-space:nowrap}.data-table tbody td{padding:12px 18px;border-bottom:1px solid var(--border);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background var(--t)}.data-table tbody tr:hover{background:var(--surface-2)}.clickable-row{cursor:pointer}.row-due,.row-overdue,.row-due td:first-child,.row-overdue td:first-child{position:relative}.row-due td:first-child:before,.row-overdue td:first-child:before{content:"";position:absolute;inset-block:6px;inset-inline-end:0;width:3px;border-radius:var(--r-pill)}.row-due td:first-child:before{background:var(--warn)}.row-overdue td:first-child:before{background:var(--bad)}.row-overdue{background:#fffbfb}.row-muted td{opacity:.45}.ltr-cell{direction:ltr;text-align:right;font-variant-numeric:tabular-nums}.state{padding:52px 20px;text-align:center;color:var(--text-soft);font-size:.93rem}.page-title{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.page-title h1{margin:0}.muted{color:var(--text-muted)}.count-pill{background:var(--accent-soft);color:var(--accent);font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:var(--r-pill);font-variant-numeric:tabular-nums}.spacer{flex:1 1 auto}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.tabs{display:inline-flex;gap:2px;background:var(--surface-3);border-radius:var(--r-sm);padding:3px}.tab{border:none;background:transparent;font-family:inherit;font-size:.85rem;font-weight:600;color:var(--text-muted);padding:7px 15px;border-radius:7px;cursor:pointer;transition:var(--t)}.tab:hover{color:var(--text)}.tab.active{background:var(--surface);color:var(--accent);box-shadow:var(--sh-xs)}.search-box{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 13px;height:38px;min-width:220px;flex:1 1 220px;max-width:340px;color:var(--text-soft);transition:var(--t)}.search-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.search-box input{border:none;outline:none;background:transparent;font-family:inherit;font-size:.9rem;color:var(--text);width:100%}.search-box input::placeholder{color:var(--text-soft)}.avatar-chip{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;color:#fff;font-size:.78rem;font-weight:700;flex-shrink:0;background:var(--accent)}.member-cell{display:flex;align-items:center;gap:9px}.modal-backdrop{position:fixed;inset:0;background:#13141a66;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;animation:fadeIn .14s ease-out}.modal{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-lg);width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;animation:popIn .2s cubic-bezier(.32,1.25,.55,1)}.modal-head{display:flex;align-items:center;gap:11px;padding:20px 24px 14px}.modal-head h2{margin:0;font-size:1.15rem}.modal-close{margin-inline-start:auto;border:none;background:transparent;color:var(--text-soft);cursor:pointer;padding:0;width:32px;height:32px;display:grid;place-items:center;border-radius:var(--r-xs);transition:var(--t)}.modal-close:hover{background:var(--surface-3);color:var(--text)}.modal-body{padding:6px 24px 22px;overflow-y:auto;display:grid;gap:15px}.modal-foot{display:flex;gap:9px;padding:15px 24px;border-top:1px solid var(--border)}.modal-foot .spacer{flex:1 1 auto}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:15px}@media (max-width: 560px){.grid-2{grid-template-columns:1fr}}.form-error{color:#b91c1c;background:var(--bad-soft);border-radius:var(--r-sm);padding:9px 13px;font-size:.86rem;margin:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:none}}@keyframes fadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
