:root{--bg: #f8f9fc;--card: #ffffff;--ink: #1a1d26;--ink-secondary: #374151;--muted: #6b7280;--primary: #4f46e5;--primary-hover: #4338ca;--primary-light: #eef2ff;--chart-cursor: rgba(79, 70, 229, .08);--danger: #dc2626;--danger-hover: #b91c1c;--danger-light: #fef2f2;--net: #059669;--net-light: #ecfdf5;--net-border: #a7f3d0;--border: #e5e7eb;--border-light: #f3f4f6;--border-hover: #d1d5db;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .06);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .08);--radius: 10px;--radius-lg: 14px;--sidebar-width: 240px;--transition: .15s ease;--input-bg: #fff;--table-header-bg: #fafbfc;--table-hover-bg: #f9fafb;--input-placeholder: #9ca3af;--input-suffix-bg: #fafbfc;--focus-ring: rgba(79, 70, 229, .1);--backdrop: rgba(0, 0, 0, .3);--on-primary: #fff;--badge-text: #4338ca;--badge-ss-bg: var(--net-light);--badge-ss-text: #047857;--badge-vat-bg: #fef3c7;--badge-vat-text: #92400e;--badge-irs-bg: #ede9fe;--badge-irs-text: #6d28d9;--badge-recap-bg: #e0f2fe;--badge-recap-text: #0369a1;--alert-border: #fecaca;--alert-warning-bg: #fef3c7;--alert-warning-text: #92400e;--alert-warning-border: #fde68a;--notice-bg: #fffbeb;--notice-border: #fde68a;--notice-text: #92400e;--verify-border: #fde68a;--verify-bg: #fffdf5;--verify-icon-bg: #fef3c7;--verify-icon-text: #b45309;--verify-title: #92400e;--verify-text: #78716c;--danger-zone-border: #fecaca;--ts-today-bg: rgba(79, 70, 229, .04);--ts-today-header-bg: rgba(79, 70, 229, .07);--ts-today-footer-bg: rgba(79, 70, 229, .06);--ts-weekend-bg: rgba(0, 0, 0, .015);--ts-weekend-header-bg: #f6f7f8;--ts-weekend-footer-bg: #f5f6f7;--ts-hour-hover-border: #c7c9ce;--ts-hour-disabled-text: #c7c9ce;--ts-hour-placeholder: #d1d5db;--bg-secondary: #f8f9fa;--primary-bg: #e0e7ff;--code-bg: #f1f5f9;--kanban-backlog-text: #6b7280;--kanban-backlog-bg: #f3f4f6;--kanban-todo-text: #475569;--kanban-todo-bg: #f1f5f9;--kanban-inprogress-text: #1d4ed8;--kanban-inprogress-bg: #dbeafe;--kanban-done-text: #15803d;--kanban-done-bg: #dcfce7;--kanban-count-bg: rgba(0, 0, 0, .08);--status-backlog: #9ca3af;--status-todo: #64748b;--status-inprogress: #3b82f6;--status-done: #22c55e;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}:root.dark{--bg: #0f1117;--card: #1a1d28;--ink: #e8eaf0;--ink-secondary: #b0b8c8;--muted: #7c859a;--primary: #818cf8;--primary-hover: #6366f1;--primary-light: rgba(99, 102, 241, .15);--chart-cursor: rgba(129, 140, 248, .16);--danger: #f87171;--danger-hover: #ef4444;--danger-light: rgba(248, 113, 113, .12);--net: #34d399;--net-light: rgba(52, 211, 153, .12);--net-border: rgba(52, 211, 153, .25);--border: #2a2e3a;--border-light: #222633;--border-hover: #3d4255;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--input-bg: #1e2130;--table-header-bg: #161821;--table-hover-bg: #1e2130;--input-placeholder: #5a6178;--input-suffix-bg: #161821;--focus-ring: rgba(129, 140, 248, .2);--backdrop: rgba(0, 0, 0, .6);--on-primary: #fff;--badge-text: #a5b4fc;--badge-ss-bg: rgba(52, 211, 153, .12);--badge-ss-text: #6ee7b7;--badge-vat-bg: rgba(251, 191, 36, .12);--badge-vat-text: #fbbf24;--badge-irs-bg: rgba(167, 139, 250, .12);--badge-irs-text: #a78bfa;--badge-recap-bg: rgba(56, 189, 248, .12);--badge-recap-text: #38bdf8;--alert-border: rgba(248, 113, 113, .3);--alert-warning-bg: rgba(251, 191, 36, .12);--alert-warning-text: #fbbf24;--alert-warning-border: rgba(251, 191, 36, .25);--notice-bg: rgba(251, 191, 36, .08);--notice-border: rgba(251, 191, 36, .25);--notice-text: #fbbf24;--verify-border: rgba(251, 191, 36, .25);--verify-bg: rgba(251, 191, 36, .06);--verify-icon-bg: rgba(251, 191, 36, .15);--verify-icon-text: #fbbf24;--verify-title: #fbbf24;--verify-text: #9ca3af;--danger-zone-border: rgba(248, 113, 113, .3);--ts-today-bg: rgba(129, 140, 248, .06);--ts-today-header-bg: rgba(129, 140, 248, .1);--ts-today-footer-bg: rgba(129, 140, 248, .08);--ts-weekend-bg: rgba(255, 255, 255, .015);--ts-weekend-header-bg: #14161e;--ts-weekend-footer-bg: #14161e;--ts-hour-hover-border: #4a5068;--ts-hour-disabled-text: #3d4255;--ts-hour-placeholder: #3d4255;--bg-secondary: #161821;--primary-bg: rgba(99, 102, 241, .2);--code-bg: #161821;--kanban-backlog-text: #9ca3af;--kanban-backlog-bg: #1e2130;--kanban-todo-text: #94a3b8;--kanban-todo-bg: #1c2030;--kanban-inprogress-text: #60a5fa;--kanban-inprogress-bg: rgba(59, 130, 246, .12);--kanban-done-text: #4ade80;--kanban-done-bg: rgba(34, 197, 94, .12);--kanban-count-bg: rgba(255, 255, 255, .1);--status-backlog: #9ca3af;--status-todo: #94a3b8;--status-inprogress: #60a5fa;--status-done: #4ade80;color-scheme:dark}*{box-sizing:border-box;margin:0}body{background:var(--bg);color:var(--ink)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--primary-light);color:var(--primary)}.app-layout{display:flex;min-height:100vh;min-height:100dvh}.sidebar{position:sticky;top:0;width:var(--sidebar-width);min-width:var(--sidebar-width);height:100vh;height:100dvh;background:var(--card);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:100;overflow-y:auto;flex-shrink:0}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:20px 18px 16px}.sidebar-brand .theme-toggle{margin-left:auto}.sidebar-brand .theme-menu{top:calc(100% + 6px);bottom:auto;right:0;left:auto}.brand-icon{width:34px;height:34px;border-radius:9px;background:var(--primary);color:var(--on-primary);display:grid;place-items:center;font-weight:800;font-size:13px;letter-spacing:-.5px;flex-shrink:0}.brand-text{font-weight:700;font-size:16px;color:var(--ink)}.sidebar-nav{flex:1;padding:4px 10px}.nav-section{margin-bottom:18px}.nav-section-label{padding:0 8px;margin-bottom:4px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;font-size:14px;font-weight:500;color:var(--ink-secondary);text-decoration:none;transition:background var(--transition),color var(--transition)}.nav-item:hover{background:var(--border-light);color:var(--ink);text-decoration:none}.nav-item.active{background:var(--primary-light);color:var(--primary);font-weight:600}.nav-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.sidebar-footer{padding:6px 10px 10px;border-top:1px solid var(--border)}.sidebar-footer .nav-item{margin-bottom:2px}.sidebar-legal{padding:8px 16px 4px;font-size:12px;color:var(--muted)}.sidebar-legal a{color:var(--muted);text-decoration:none}.sidebar-legal a:hover{color:var(--ink)}.sidebar-user{display:flex;align-items:center;gap:10px;padding:10px 8px 6px}.avatar{width:32px;height:32px;border-radius:8px;background:var(--primary-light);color:var(--primary);display:grid;place-items:center;font-size:12px;font-weight:700;flex-shrink:0}.user-info{flex:1;min-width:0}.user-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-email{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logout-btn{background:none;border:none;padding:6px;border-radius:6px;cursor:pointer;color:var(--muted);transition:background var(--transition),color var(--transition);display:flex;align-items:center}.logout-btn:hover{background:var(--danger-light);color:var(--danger)}.mobile-header{display:none}.mobile-menu-btn{background:none;border:none;padding:6px;cursor:pointer;color:var(--ink);display:flex;align-items:center}.sidebar-backdrop{display:none}.main-content{flex:1;min-width:0}.page{max-width:1040px;margin:0 auto;padding:28px 32px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.page-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}h1{font-size:22px;font-weight:700;margin-bottom:18px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;margin-bottom:20px;box-shadow:var(--shadow-sm)}.card-title{font-weight:600;font-size:15px;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.row-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}input,select,textarea{padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;background:var(--input-bg);color:var(--ink);transition:border-color var(--transition),box-shadow var(--transition)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--focus-ring)}input::placeholder{color:var(--input-placeholder)}.row-form input{flex:1;min-width:120px}label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:500;color:var(--muted);margin-bottom:14px}label input,label select{color:var(--ink)}.form-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px 14px}.form-grid label{margin-bottom:10px}.form-grid .span-2{grid-column:span 2}.form-grid .span-3{grid-column:span 3}.form-grid .span-full{grid-column:1 / -1}.form-actions{display:flex;align-items:center;gap:12px;padding-top:4px}.form-grid input,.form-grid select{width:100%}.input-with-suffix{display:flex;gap:0}.input-with-suffix input{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none;flex:1;min-width:0}.input-suffix-select{border-top-left-radius:0!important;border-bottom-left-radius:0!important;width:auto!important;min-width:64px;background:var(--input-suffix-bg);color:var(--muted);font-weight:500;font-size:13px}.input-suffix-text{display:flex;align-items:center;padding:0 10px;border:1px solid var(--border);border-left:none;border-radius:0 8px 8px 0;background:var(--input-suffix-bg);color:var(--muted);font-size:13px;font-weight:500;white-space:nowrap}.checkbox-field{flex-direction:row!important;align-items:center!important;gap:10px!important;grid-column:span 2}.checkbox-field .setting-checkbox{flex-shrink:0}.checkbox-label{display:block;font-weight:500;font-size:13px;color:var(--ink-secondary)}.checkbox-hint{display:block;font-size:12px;color:var(--muted);font-weight:400}.inline-field{flex-direction:row;align-items:center;gap:6px;margin-bottom:0;color:var(--muted);font-weight:500}.fee-input{width:80px}@media(max-width:860px){.form-grid{grid-template-columns:repeat(2,1fr)}.form-grid .span-2{grid-column:span 2}.form-grid .span-3{grid-column:1 / -1}}@media(max-width:600px){.form-grid{grid-template-columns:1fr}.form-grid .span-2,.form-grid .span-3,.checkbox-field{grid-column:span 1}}.btn{padding:8px 18px;border-radius:8px;border:1px solid transparent;font-weight:600;cursor:pointer;font-size:14px;font-family:inherit;transition:background var(--transition),border-color var(--transition),box-shadow var(--transition),transform 80ms ease;display:inline-flex;align-items:center;gap:6px}.btn:active:not(:disabled){transform:scale(.97)}.btn.primary{background:var(--primary);color:var(--on-primary)}.btn.primary:hover:not(:disabled){background:var(--primary-hover);box-shadow:var(--shadow-sm)}.btn.ghost{background:transparent;border-color:var(--border);color:var(--ink-secondary)}.btn.ghost:hover:not(:disabled){background:var(--border-light);border-color:var(--border-hover)}.btn.danger{color:var(--danger)}.btn.danger:hover:not(:disabled){background:var(--danger-light)}.btn:disabled{opacity:.5;cursor:not-allowed}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.table th,.table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border)}.table th{background:var(--table-header-bg);color:var(--muted);font-weight:600;font-size:13px}.table tbody tr{transition:background var(--transition)}.table tbody tr:hover{background:var(--table-hover-bg)}.table tbody tr:last-child td{border-bottom:none}.table.compact th,.table.compact td{padding:8px 12px}.table.timesheet tfoot td{border-top:2px solid var(--border);border-bottom:none;background:var(--table-header-bg);font-weight:600}.table .num,.num{text-align:right;font-variant-numeric:tabular-nums}.import-preview{margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}@media(max-width:720px){.table-scroll>.table:not(.compact){min-width:560px}}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--ink)}.sort-arrow{color:var(--primary);font-size:11px;margin-left:2px}.filters{margin-bottom:14px}.filters input,.filters select{min-width:140px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;font-size:14px}.actions{display:flex;gap:6px;white-space:nowrap}.muted{color:var(--muted)}.inline-select{padding:4px 8px;font-size:13px}.center{display:grid;place-items:center;height:100vh;height:100dvh;color:var(--muted)}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:12px;margin-bottom:20px}.stat{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-sm)}.stat-label{font-size:12px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:20px;font-weight:700;margin-top:4px}.stat.out .stat-value{color:var(--danger)}.stat.net{background:var(--net-light);border-color:var(--net-border)}.stat.net .stat-value{color:var(--net)}.calc-page .calc-form{display:flex;flex-direction:column;gap:20px;margin-bottom:24px}.calc-page .field{display:flex;flex-direction:column;gap:6px}.calc-page .field>label{font-size:13px;font-weight:600;color:var(--ink-secondary)}.calc-page .field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}.calc-page .input-row{display:flex;gap:8px}.calc-page .input-row input{flex:1;min-width:0}.calc-page .suffix{display:flex;align-items:center;padding:0 12px;background:var(--input-suffix-bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--muted);font-size:14px}.calc-page .hint{font-size:12px;color:var(--muted);margin:0}.calc-page .toggles{display:flex;flex-direction:column;gap:12px;border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin:0}.calc-page .check{display:flex;gap:10px;align-items:flex-start;font-size:14px;cursor:pointer}.calc-page .check input{margin-top:2px;flex:none}.calc-page .check small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.calc-page .headline{display:flex;flex-direction:column;gap:2px;padding:20px;background:var(--net-light);border:1px solid var(--net-border);border-radius:var(--radius-lg);margin-bottom:20px}.calc-page .headline-label{font-size:13px;color:var(--ink-secondary);font-weight:600}.calc-page .headline-value{font-size:34px;font-weight:700;color:var(--net);line-height:1.1}.calc-page .headline-sub{font-size:13px;color:var(--muted)}.calc-page .breakdown{display:flex;flex-direction:column}.calc-page .breakdown .row{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border-light);font-size:14px}.calc-page .breakdown .row.sub{font-size:13px;color:var(--muted);padding:4px 0 4px 16px;border-bottom:none}.calc-page .breakdown .row.total{border-bottom:none;border-top:2px solid var(--border);font-weight:700;margin-top:4px}.calc-page .breakdown .row.positive .num{color:var(--net)}.calc-page .aside{margin-top:16px;padding:12px 16px;background:var(--table-header-bg);border-radius:var(--radius);font-size:13px;color:var(--ink-secondary)}.calc-page .aside p{margin:0}.calc-page .notes{margin:16px 0 0;padding-left:18px;font-size:13px;color:var(--muted);display:flex;flex-direction:column;gap:6px}.calc-page .disclaimer{margin-top:20px;font-size:12px;line-height:1.5}.calc-page .visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;background:var(--primary-light);color:var(--badge-text)}.badge.muted{background:transparent;border:1px solid var(--border);color:var(--text-muted);font-weight:500;margin-left:8px}.client-inactive td{opacity:.6}.client-inactive td:first-child{opacity:1}.badge-ss{background:var(--badge-ss-bg);color:var(--badge-ss-text)}.badge-vat{background:var(--badge-vat-bg);color:var(--badge-vat-text)}.badge-irs{background:var(--badge-irs-bg);color:var(--badge-irs-text)}.badge-recap{background:var(--badge-recap-bg);color:var(--badge-recap-text)}.row-overdue td{background:var(--danger-light)}.alert{background:var(--danger-light);color:var(--danger);border:1px solid var(--alert-border);padding:10px 14px;border-radius:8px;font-size:14px;margin-bottom:12px;display:flex;align-items:center}.alert-warning{background:var(--alert-warning-bg);color:var(--alert-warning-text);border-color:var(--alert-warning-border)}.notice{background:var(--notice-bg);border:1px solid var(--notice-border);color:var(--notice-text);padding:10px 14px;border-radius:var(--radius);font-size:14px;margin-bottom:16px}.nav-icon{position:relative}.nav-badge{position:absolute;top:-2px;right:-3px;width:9px;height:9px;border-radius:50%;background:var(--danger);border:2px solid var(--card);box-sizing:content-box}.nav-badge-label{margin-left:auto;font-size:11px;font-weight:600;color:var(--danger);white-space:nowrap}.nav-item.has-badge:not(.active){color:var(--ink)}.account-verify-card{display:flex;gap:16px;align-items:flex-start;border-color:var(--verify-border);background:var(--verify-bg)}.account-verify-icon{flex-shrink:0;width:40px;height:40px;border-radius:10px;background:var(--verify-icon-bg);color:var(--verify-icon-text);display:grid;place-items:center}.account-verify-body{flex:1}.account-verify-title{font-weight:600;font-size:15px;color:var(--verify-title);margin-bottom:4px}.account-verify-text{font-size:14px;color:var(--verify-text);margin:0 0 12px;line-height:1.5}.link-btn{background:none;border:none;color:var(--primary);font:inherit;cursor:pointer;text-decoration:underline;padding:0}.setting-row{flex-direction:row;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid var(--border-light);color:var(--ink)}.setting-label{font-weight:600;font-size:14px}.setting-hint{color:var(--muted);font-size:13px;margin-top:2px}.setting-input{display:flex;align-items:center;gap:6px;color:var(--muted)}.setting-input input{width:90px}.setting-checkbox{width:18px!important;height:18px;cursor:pointer;accent-color:var(--primary)}.setting-slider{display:flex;align-items:center;gap:10px;min-width:200px}.setting-slider input[type=range]{width:160px;padding:0;accent-color:var(--primary);cursor:pointer}.setting-slider-value{font-weight:600;color:var(--ink);width:46px;text-align:right}.setting-actions{display:flex;align-items:center;gap:12px;margin-top:18px}.saved-note{color:var(--net);font-weight:600;font-size:14px}.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:20px}.auth-brand-icon{width:36px;height:36px;border-radius:9px;background:var(--primary);color:var(--on-primary);display:grid;place-items:center;font-weight:800;font-size:14px;letter-spacing:-.5px}.auth-brand-text{font-weight:700;font-size:17px;color:var(--ink)}.auth-wrap{display:grid;place-items:center;min-height:100vh;min-height:100dvh;padding:24px;background:var(--bg)}.auth-card{width:380px;padding:32px!important;box-shadow:var(--shadow-lg)!important;border-radius:var(--radius-lg)!important}.auth-card h1{margin-top:0;margin-bottom:6px;font-size:24px}.auth-card .btn.primary{width:100%;justify-content:center;padding:10px 18px;margin-top:4px}.auth-card label{margin-bottom:16px}.auth-card p.muted{margin-bottom:0;margin-top:16px;text-align:center;font-size:14px}.legal-standalone{min-height:100vh;min-height:100dvh;padding:0 24px 48px;background:var(--bg)}.legal-standalone .legal-page{margin:0 auto}.legal-standalone-header{display:flex;align-items:center;justify-content:space-between;max-width:680px;margin:0 auto;padding:20px 0 32px}.legal-standalone-brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:15px;color:var(--ink);text-decoration:none}.legal-standalone-brand:hover{opacity:.7}.legal-standalone-actions{display:flex;gap:8px}.legal-page{max-width:680px}.legal-page h1{font-size:28px;margin:0 0 4px}.legal-updated{color:var(--muted);font-size:14px;margin:0 0 32px}.legal-notice{border-left:3px solid var(--border-hover);padding:10px 0 10px 14px;margin:0 0 32px;font-size:14px;line-height:1.6;color:var(--muted)}.legal-notice .link-button{font-size:inherit;white-space:nowrap}.legal-page section{margin-bottom:28px}.legal-page h2{font-size:18px;margin:0 0 8px;color:var(--ink)}.legal-page h3{font-size:15px;font-weight:600;margin:16px 0 4px;color:var(--ink)}.legal-page p{font-size:15px;line-height:1.7;color:var(--ink);margin:0 0 12px}.legal-page ul{padding-left:20px;margin:0 0 12px}.legal-page li{font-size:15px;line-height:1.7;margin-bottom:6px}.legal-footer{margin-top:48px;padding-top:24px;border-top:1px solid var(--border);font-size:14px;color:var(--muted)}.legal-footer a{color:var(--primary)}.legal-sep{margin:0 8px;color:var(--border-hover)}.danger-zone{border-color:var(--danger-zone-border)}.btn.danger-solid{background:var(--danger);color:var(--on-primary)}.btn.danger-solid:hover:not(:disabled){background:var(--danger-hover)}.empty-wrap{position:relative}.empty-blurred{filter:blur(5px);opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}.mock-chart{display:flex;align-items:flex-end;gap:10px;height:240px;padding:8px 4px 0}.mock-bar{flex:1;background:var(--primary);border-radius:4px 4px 0 0}.empty-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}.empty-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px 36px;text-align:center;max-width:380px;box-shadow:var(--shadow-lg)}.empty-title{font-size:18px;font-weight:700;margin-bottom:6px}.empty-card .btn{margin-top:14px;display:inline-flex}@media(max-width:860px){.app-layout{flex-direction:column}.sidebar{position:fixed;top:0;left:0;bottom:0;height:100vh!important;height:100dvh!important;transform:translate(-100%);transition:transform .25s ease;box-shadow:none}.sidebar.open{transform:translate(0);box-shadow:var(--shadow-lg)}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);z-index:90;animation:fadeIn .2s ease}.mobile-header{display:flex;align-items:center;gap:12px;padding:0 16px;height:54px;background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.mobile-header .brand{font-weight:700;font-size:17px}.page{padding:20px 16px}.summary-grid{grid-template-columns:repeat(2,1fr)}.row-form{flex-direction:column;align-items:stretch}.row-form input,.row-form select{min-width:0}.auth-card{width:100%;max-width:380px}}@media(max-width:600px){.page{padding:16px 12px}h1{font-size:19px}.stat-value{font-size:17px}.page-head{flex-direction:column;align-items:stretch}.page-head-actions{justify-content:flex-start}.card-title,.pagination{flex-wrap:wrap}.setting-row{flex-direction:column;align-items:flex-start;gap:10px}.setting-slider{min-width:0;width:100%}.setting-slider input[type=range]{flex:1;width:auto}.setting-input{width:100%}.setting-input input{flex:1;width:auto;min-width:0}}.ts-week-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px 18px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.ts-week-arrows{display:flex;align-items:center;gap:8px}.ts-week-arrows .btn{width:36px;height:36px;padding:0;display:grid;place-items:center;font-size:20px;font-weight:400;border-radius:8px}.ts-week-label{font-weight:700;font-size:15px;min-width:220px;text-align:center}.ts-week-controls{display:flex;align-items:center;gap:8px}.ts-week-controls input[type=date]{width:150px}.ts-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.ts-scroll{overflow-x:auto}.ts-grid{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.ts-grid th,.ts-grid td{padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:middle}.ts-grid thead th{background:var(--table-header-bg);font-weight:600;font-size:13px;color:var(--muted);text-align:center;white-space:nowrap;position:sticky;top:0;z-index:2}.ts-grid tfoot td{background:var(--table-header-bg);border-bottom:none;border-top:2px solid var(--border);font-weight:600;text-align:center}.ts-col-client{text-align:left!important;min-width:170px;padding-left:16px!important;padding-right:12px!important}.ts-col-day{text-align:center;width:90px;min-width:76px}th.ts-col-day-clickable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s}th.ts-col-day-clickable:hover{background:var(--primary-light)}th.ts-timeline-active{background:var(--primary-light);box-shadow:inset 0 -2px 0 var(--primary)}.ts-col-total{text-align:right!important;padding-right:16px!important;min-width:90px;white-space:nowrap}.ts-col-actions{text-align:right!important;padding-right:16px!important;white-space:nowrap;min-width:180px}.ts-day-name{display:block;font-weight:600;font-size:13px}.ts-day-date{display:block;font-weight:400;font-size:11px;color:var(--muted);margin-top:1px}.ts-today{background:var(--ts-today-bg)}thead .ts-today{background:var(--ts-today-header-bg)}thead .ts-today .ts-day-name{color:var(--primary)}tfoot .ts-today{background:var(--ts-today-footer-bg)}.ts-weekend{background:var(--ts-weekend-bg)}thead .ts-weekend{background:var(--ts-weekend-header-bg)}tfoot .ts-weekend{background:var(--ts-weekend-footer-bg)}.ts-client-info{display:flex;flex-direction:column;gap:1px}.ts-client-name{font-weight:600;font-size:14px;color:var(--ink)}.ts-client-rate{font-size:12px;color:var(--muted)}.ts-client-select{width:100%;min-width:140px}.ts-row-msg{margin-top:6px;padding:6px 10px;background:var(--net-light);color:var(--net);border-radius:6px;font-size:12px;font-weight:500}.ts-hour-input{width:100%;max-width:72px;text-align:center;padding:8px 4px;border:1.5px solid var(--border);border-radius:8px;font-size:15px;font-weight:500;font-family:inherit;background:var(--card);color:var(--ink);transition:border-color var(--transition),box-shadow var(--transition),background var(--transition);-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.ts-hour-input::-webkit-inner-spin-button,.ts-hour-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.ts-hour-input::placeholder{color:var(--ts-hour-placeholder);font-weight:400}.ts-hour-input:hover:not(:disabled){border-color:var(--ts-hour-hover-border)}.ts-hour-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--focus-ring);background:var(--input-bg)}.ts-hour-input.filled{background:var(--primary-light);border-color:#4f46e540;color:var(--primary-hover);font-weight:600}.ts-hour-input:disabled{background:var(--border-light);border-color:transparent;color:var(--ts-hour-disabled-text);cursor:not-allowed}.ts-total-hours{display:block;font-weight:700;font-size:14px;color:var(--ink)}.ts-total-amount{display:block;font-size:12px;color:var(--muted);margin-top:1px}.ts-footer-val{color:var(--muted);font-size:13px}.ts-footer-val.has-hours{color:var(--ink);font-weight:600;font-size:14px}.ts-btn{padding:6px 14px;font-size:13px}.ts-btn-remove{color:var(--muted)}.ts-btn-remove:hover:not(:disabled){color:var(--danger);background:var(--danger-light);border-color:transparent}.ts-col-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end}thead .ts-col-actions,tfoot .ts-col-actions{display:table-cell}.ts-bottom{display:flex;align-items:center;gap:16px;padding:12px 16px;border-top:1px solid var(--border-light)}.ts-hint{font-size:13px}@media(max-width:860px){.ts-week-nav{flex-direction:column;gap:10px}.ts-week-controls{width:100%;justify-content:center}.ts-col-actions{min-width:140px}.ts-btn{padding:6px 10px;font-size:12px}.ts-bottom{flex-direction:column;gap:8px;align-items:flex-start}}@media(max-width:720px){.ts-scroll{-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}.ts-col-client,.ts-grid tbody td.ts-col-client,.ts-grid tfoot td.ts-col-client{position:sticky;left:0;z-index:3;min-width:128px;max-width:128px;background:var(--card);box-shadow:1px 0 0 var(--border)}.ts-grid thead th.ts-col-client{z-index:4;background:var(--table-header-bg)}.ts-grid tfoot td.ts-col-client{background:var(--table-header-bg)}.ts-client-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ts-client-rate{font-size:11px}.ts-col-day{width:64px;min-width:64px;scroll-snap-align:start}.ts-day-date{font-size:11px}.ts-hour-input{max-width:none;min-height:44px;font-size:16px}.ts-col-total{min-width:72px}.ts-col-actions{min-width:96px}.ts-week-arrows .btn{min-width:44px;min-height:44px}.ts-week-controls{flex-wrap:wrap}.ts-week-controls input[type=date]{flex:1;min-width:0}}.timer-tab{display:flex;flex-direction:column;gap:16px}.timer-controls{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px 18px;margin-top:20px;margin-bottom:12px;box-shadow:var(--shadow-sm)}.timer-controls-row{display:flex;align-items:center;gap:10px}.timer-client-select,.timer-task-select{width:180px;flex-shrink:0}.timer-note-input{flex:1;min-width:0}.timer-start-btn,.timer-stop-btn{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;padding:8px 20px;font-size:14px;font-weight:600;border-radius:var(--radius)}@media(max-width:720px){.timer-controls{padding:12px}.timer-controls-row{flex-direction:column;align-items:stretch;gap:8px}.timer-client-select,.timer-task-select,.timer-note-input{width:100%;min-height:44px;font-size:16px}.timer-start-btn,.timer-stop-btn{width:100%;justify-content:center;min-height:48px;font-size:16px}}.timer-stop-btn{background:var(--danger);color:var(--on-primary);border:none;cursor:pointer;font-variant-numeric:tabular-nums}.timer-stop-btn:hover{background:var(--danger-hover)}.timer-play-icon{width:0;height:0;border-left:8px solid var(--on-primary);border-top:5px solid transparent;border-bottom:5px solid transparent}.timer-stop-icon{width:10px;height:10px;background:var(--on-primary);border-radius:2px}.timer-timeline-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.timer-timeline-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.timer-timeline-title{font-weight:600;font-size:14px;color:var(--ink)}.timer-timeline-total{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}.timer-timeline{position:relative}.timer-timeline-bar{position:relative;height:36px;background:var(--border-light);border-radius:6px;overflow:hidden}.timer-timeline-block{position:absolute;top:4px;height:28px;min-width:4px;border-radius:4px;opacity:.9;transition:opacity .15s;cursor:default}.timer-timeline-block:hover{opacity:1}.timer-timeline-block.running{animation:timerPulse 1.5s ease-in-out infinite}@keyframes timerPulse{0%,to{opacity:.7}50%{opacity:1}}.timer-timeline-hours{position:relative;height:20px;margin-top:4px}.timer-timeline-hour{position:absolute;transform:translate(-50%);font-size:11px;color:var(--muted);white-space:nowrap}.timer-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border-light)}.timer-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-secondary)}.timer-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.timer-sessions-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;margin-top:20px;box-shadow:var(--shadow-sm)}.timer-sessions-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.timer-sessions-title{font-weight:600;font-size:14px}.timer-sessions-filter{padding:4px 8px;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:13px}.timer-sessions-day-header{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding:8px 0 4px;border-bottom:1px solid var(--border);margin-bottom:4px}.timer-sessions-list{display:flex;flex-direction:column;gap:1px}.timer-session{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border-light)}.timer-session:last-child{border-bottom:none}.timer-session.running{background:var(--primary-light);margin:0 -18px;padding:10px 18px;border-radius:var(--radius);border-bottom:none}.timer-session-color{width:4px;height:28px;border-radius:2px;flex-shrink:0}.timer-session-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.timer-session-client{font-weight:500;font-size:13px;display:inline-flex;align-items:center;gap:8px}.timer-session-task{font-weight:500;font-size:11px;color:var(--primary);background:var(--primary-light);padding:1px 8px;border-radius:999px}.timer-session-note{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-session-time{font-size:12px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.timer-session-dur{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;min-width:70px;text-align:right}.timer-session-dur.running{color:var(--primary)}.timer-session-edit,.timer-session-del{padding:4px 8px;font-size:16px;line-height:1;color:var(--muted);opacity:0;transition:opacity var(--transition)}.timer-session-edit{font-size:13px}.timer-session:hover .timer-session-edit,.timer-session:hover .timer-session-del{opacity:1}.timer-session.manual{border-left:3px solid var(--border);padding-left:9px}.timer-session.editing{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--border-light)}.timer-session-edit-task{max-width:180px;padding:4px 8px;font-size:13px}.timer-session-edit-times{display:flex;gap:10px;align-items:center}.timer-session-edit-times label{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.timer-session-edit-times input[type=time]{width:100px;padding:4px 6px;font-size:13px}.timer-session-edit-actions{display:flex;gap:6px;margin-left:auto}.timer-session-edit-actions .btn{padding:5px 12px;font-size:12px}@media(max-width:600px){.timer-controls-row{flex-direction:column;align-items:stretch}.timer-client-select{width:100%}.timer-session{flex-wrap:wrap;gap:6px}.timer-session-del{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.tasks-board-bar{display:flex;align-items:center;gap:10px;margin-bottom:16px}.tasks-board-select{flex:1;padding:8px 12px;border-radius:8px;border:1px solid var(--border);background:var(--card);font-size:14px;color:var(--text)}.tasks-delete-board{font-size:18px;color:var(--danger);padding:4px 8px}.tasks-new-board{display:flex;gap:10px;margin-bottom:16px;padding:12px 16px;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg)}.tasks-new-board select,.tasks-new-board input{flex:1;padding:6px 10px;border-radius:6px;border:1px solid var(--border);font-size:14px}.tasks-status-bar{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}.tasks-status-chip{padding:4px 12px;border-radius:20px;border:1px solid var(--border);background:var(--card);font-size:13px;cursor:pointer;transition:all .15s}.tasks-status-chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}.tasks-status-chip.status-backlog.active{background:var(--status-backlog);border-color:var(--status-backlog)}.tasks-status-chip.status-todo.active{background:var(--status-todo);border-color:var(--status-todo)}.tasks-status-chip.status-in_progress.active{background:var(--status-inprogress);border-color:var(--status-inprogress)}.tasks-status-chip.status-done.active{background:var(--status-done);border-color:var(--status-done)}.tasks-add-row{display:flex;gap:10px;margin-bottom:8px}.tasks-add-row.subtask{margin-bottom:0}.tasks-add-input{flex:1;padding:8px 12px;border-radius:8px;border:1px solid var(--border);font-size:14px;background:var(--card)}.tasks-list{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.task-row{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border);transition:background .1s}.task-row:last-child{border-bottom:none}.task-row:hover{background:var(--bg)}.task-row.done{opacity:.6}.task-row.done .task-title{text-decoration:line-through}.task-check{width:20px;height:20px;min-width:20px;border-radius:50%;border:2px solid var(--border);background:transparent;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;color:#fff;transition:all .15s}.task-check.status-done{background:var(--status-done);border-color:var(--status-done)}.task-check.status-in_progress{border-color:var(--status-inprogress)}.task-title{flex:1;cursor:pointer;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-title:hover{color:var(--primary)}.task-tags{display:flex;gap:4px;flex-shrink:0}.task-tag{font-size:11px;padding:1px 6px;border-radius:4px;border:1px solid;white-space:nowrap}.task-priority-dot{width:8px;height:8px;min-width:8px;border-radius:50%;flex-shrink:0}.task-due{font-size:12px;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.task-due.overdue{color:var(--danger);font-weight:600}.task-estimate{font-size:12px;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.task-actions{display:flex;gap:4px;align-items:center;flex-shrink:0;opacity:0;transition:opacity .15s}.task-row:hover .task-actions{opacity:1}.task-status-select{font-size:12px;padding:2px 4px;border-radius:4px;border:1px solid var(--border);background:var(--bg)}.task-btn{font-size:16px;padding:0 6px;line-height:1}.task-btn-del{color:var(--danger)}.task-detail-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);z-index:100;display:flex;justify-content:flex-end}.task-detail-panel{width:480px;max-width:100vw;background:var(--card);height:100%;display:flex;flex-direction:column;box-shadow:-4px 0 20px var(--backdrop);animation:slideIn .2s ease-out}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.task-detail-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.task-detail-header h3{margin:0;font-size:16px}.task-detail-body{flex:1;overflow-y:auto;padding:20px}.task-detail-label{display:block;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;margin-top:16px}.task-detail-label:first-child{margin-top:0}.task-detail-input,.task-detail-select{width:100%;padding:8px 10px;border-radius:6px;border:1px solid var(--border);font-size:14px;background:var(--bg)}.task-detail-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.task-detail-textarea{width:100%;padding:8px 10px;border-radius:6px;border:1px solid var(--border);font-size:14px;background:var(--bg);resize:vertical;font-family:inherit}.task-detail-tags{display:flex;flex-wrap:wrap;gap:6px}.task-detail-tag{padding:4px 10px;border-radius:6px;border:1px solid;font-size:13px;cursor:pointer;transition:all .15s}.task-detail-tag.active{font-weight:600}.task-detail-subtasks{display:flex;flex-direction:column;gap:4px}.task-detail-subtask{display:flex;align-items:center;gap:8px;font-size:13px;padding:4px 0}.task-detail-subtask.done{text-decoration:line-through;opacity:.6}.task-check-mini{width:16px;height:16px;min-width:16px;border-radius:50%;border:2px solid var(--border);font-size:9px;display:flex;align-items:center;justify-content:center;color:#fff}.task-check-mini.status-done{background:var(--status-done);border-color:var(--status-done)}.task-detail-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end}.rte-wrapper{border:1px solid var(--border);border-radius:6px;overflow:hidden}.rte-toolbar{display:flex;align-items:center;gap:2px;padding:4px 6px;background:var(--bg-secondary);border-bottom:1px solid var(--border)}.rte-btn{background:none;border:1px solid transparent;border-radius:4px;padding:4px 8px;cursor:pointer;font-size:13px;color:var(--text-secondary);line-height:1}.rte-btn:hover{background:var(--border)}.rte-btn.active{background:var(--primary-bg);color:var(--primary);border-color:var(--primary)}.rte-sep{width:1px;height:18px;background:var(--border);margin:0 4px}.rte-content .tiptap{padding:10px 12px;min-height:100px;outline:none;font-size:14px;line-height:1.6}.rte-content .tiptap p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;color:var(--text-secondary);pointer-events:none;height:0}.rte-content .tiptap h2{font-size:18px;margin:12px 0 4px}.rte-content .tiptap ul,.rte-content .tiptap ol{padding-left:24px}.rte-content .tiptap code{background:var(--code-bg);padding:2px 4px;border-radius:3px;font-size:13px}.rte-content .tiptap pre{background:var(--code-bg);padding:12px;border-radius:6px;overflow-x:auto}.rte-content .tiptap img{max-width:100%;border-radius:6px;margin:8px 0}.tasks-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.tasks-view-toggle{display:flex;gap:2px;background:var(--border-light);border-radius:8px;padding:2px}.tasks-view-btn{padding:6px 14px;border:none;border-radius:6px;background:transparent;font-size:13px;font-weight:500;cursor:pointer;color:var(--muted);transition:all .15s}.tasks-view-btn.active{background:var(--card);color:var(--ink);box-shadow:var(--shadow-sm)}.task-collapse{width:20px;min-width:20px;height:20px;border:none;background:transparent;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:transform .15s;transform:rotate(90deg);padding:0}.task-collapse.collapsed{transform:rotate(0)}.task-collapse:hover{color:var(--ink)}.task-collapse-spacer{width:20px;min-width:20px}.task-subtask-count{font-size:11px;color:var(--muted);background:var(--border-light);padding:1px 7px;border-radius:10px;flex-shrink:0}.task-client-badge{font-size:11px;color:var(--primary);background:var(--primary-light);padding:1px 7px;border-radius:4px;flex-shrink:0;white-space:nowrap}.kanban-board{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:8px}.kanban-column{background:var(--border-light);border-radius:var(--radius-lg);min-height:200px;display:flex;flex-direction:column}.kanban-column-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.kanban-column-header.status-backlog{color:var(--kanban-backlog-text);background:var(--kanban-backlog-bg)}.kanban-column-header.status-todo{color:var(--kanban-todo-text);background:var(--kanban-todo-bg)}.kanban-column-header.status-in_progress{color:var(--kanban-inprogress-text);background:var(--kanban-inprogress-bg)}.kanban-column-header.status-done{color:var(--kanban-done-text);background:var(--kanban-done-bg)}.kanban-count{font-size:12px;font-weight:700;background:var(--kanban-count-bg);padding:1px 7px;border-radius:10px}.kanban-cards{flex:1;padding:8px;display:flex;flex-direction:column;gap:8px}.kanban-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;cursor:grab;transition:box-shadow .15s,transform .15s}.kanban-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.kanban-card.dragging{opacity:.5;box-shadow:var(--shadow-lg)}.kanban-card-title{font-size:14px;font-weight:500;margin-bottom:6px}.kanban-card-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.kanban-card-client{font-size:11px;color:var(--primary);background:var(--primary-light);padding:1px 6px;border-radius:4px}.kanban-card-due{font-size:11px}.kanban-card-due.overdue{color:var(--danger);font-weight:600}.kanban-card-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.kanban-card-subtasks{font-size:11px;color:var(--muted);margin-top:6px}@media(max-width:600px){.tasks-board-bar{flex-wrap:wrap}.tasks-new-board{flex-direction:column}.task-detail-panel{width:100vw}.task-detail-row{grid-template-columns:1fr}.task-actions{opacity:1}.task-tags{display:none}.kanban-board{grid-template-columns:1fr}}.theme-toggle{background:none;border:1px solid var(--border);border-radius:8px;padding:6px;cursor:pointer;color:var(--muted);display:flex;align-items:center;justify-content:center;transition:background var(--transition),color var(--transition),border-color var(--transition)}.theme-toggle:hover{background:var(--border-light);color:var(--ink);border-color:var(--border-hover)}.theme-menu{position:absolute;top:calc(100% + 6px);right:0;background:var(--card);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow-md);padding:4px;z-index:200;min-width:140px}.theme-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:none;background:none;border-radius:6px;cursor:pointer;font-size:13px;font-family:inherit;font-weight:500;color:var(--ink-secondary);transition:background var(--transition)}.theme-menu-item:hover{background:var(--border-light)}.theme-menu-item.active{color:var(--primary);font-weight:600}.theme-menu-item svg{width:16px;height:16px;flex-shrink:0}button.nav-item{width:100%;border:none;background:transparent;cursor:pointer;font-family:inherit;text-align:left}.nav-item-locked{color:var(--muted)}.nav-item-locked:hover{color:var(--ink-secondary)}.nav-lock{margin-left:auto;display:flex;align-items:center;color:var(--muted)}.year-lock-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid var(--border);border-radius:8px;background:var(--input-bg);color:var(--muted);font-size:14px;font-weight:500;cursor:pointer;transition:border-color var(--transition),color var(--transition)}.year-lock-chip:hover{border-color:var(--border-hover);color:var(--ink-secondary)}.upgrade-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}.upgrade-modal{width:400px;max-width:100%;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:24px;animation:upgradePop .16s ease-out}@keyframes upgradePop{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}.upgrade-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--primary-light);color:var(--primary);font-size:12px;font-weight:600}.upgrade-modal h3{margin:14px 0 6px;font-size:18px}.upgrade-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}.modal-panel{width:780px;max-width:100%;max-height:88vh;max-height:88dvh;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:20px 24px;animation:upgradePop .16s ease-out}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.modal-head h3{margin:0 0 8px;font-size:18px}.modal-body{overflow-y:auto;flex:1;min-height:0}.modal-body .card{box-shadow:none}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:14px;border-top:1px solid var(--border);margin-top:14px}.edit-dialog{width:520px}.edit-dialog .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.edit-dialog .form-grid select{width:100%;max-width:100%}.edit-dialog .alert{margin-top:12px;margin-bottom:0}.form-note{margin:0 0 10px;font-size:13px}@media(max-width:600px){.edit-dialog .form-grid{grid-template-columns:1fr}.edit-dialog .form-grid .span-2,.edit-dialog .form-grid .span-3{grid-column:1 / -1}}.row-clickable{cursor:pointer}.row-filed td{opacity:.62}.link-button{background:none;border:none;padding:0;font:inherit;color:var(--accent);cursor:pointer;text-align:left}.link-button:hover{text-decoration:underline}.plans-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:20px;max-width:720px}@media(max-width:640px){.plans-grid{grid-template-columns:1fr}}.plan-card{position:relative;display:flex;flex-direction:column}.plan-pro{border-color:var(--primary);box-shadow:var(--shadow-md)}.plan-ribbon{position:absolute;top:-10px;right:16px;background:var(--primary);color:var(--on-primary);font-size:11px;font-weight:600;padding:3px 10px;border-radius:999px}.plan-name{font-size:14px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.plan-price{font-size:32px;font-weight:700;margin-top:4px}.plan-per{font-size:14px;font-weight:500;color:var(--muted);margin-left:4px}.plan-tagline{margin:8px 0 16px;font-size:14px}.feed-url-row{display:flex;gap:8px;align-items:center;margin:12px 0 8px}.feed-url{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}.feed-warning{font-size:13px;margin:0 0 12px}.feed-actions{display:flex;gap:8px;flex-wrap:wrap}.feed-help{margin-top:14px}.feed-help summary{cursor:pointer;font-size:13px}.feed-help ul{margin:8px 0 0;padding-left:20px;font-size:13px;line-height:1.9}@media(max-width:600px){.feed-url-row{flex-wrap:wrap}.feed-url{flex-basis:100%}.feed-actions .btn{flex:1}}.onboarding-card{margin-bottom:20px;border-left:3px solid var(--primary)}.onboarding-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.onboarding-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.onboarding-step{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-top:1px solid var(--border)}.onboarding-step:first-child{border-top:none}.onboarding-step-body{flex:1;min-width:0}.onboarding-step-body p{margin:2px 0 0;font-size:13px}.onboarding-step-title{font-weight:600;font-size:14px}.onboarding-check{flex:none;width:20px;height:20px;margin-top:2px;border:1.5px solid var(--border);border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:transparent}.onboarding-step.done .onboarding-check{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.onboarding-step.done .onboarding-step-title{color:var(--muted);text-decoration:line-through}.onboarding-step.done .onboarding-step-body p{display:none}@media(max-width:600px){.onboarding-step{flex-wrap:wrap}.onboarding-step .btn{width:100%}}.upgrade-inline{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.upgrade-inline .btn{flex:none}.tax-disclaimer{display:flex;align-items:flex-start;gap:8px;margin:20px 0 0;padding:12px 14px;border:1px solid var(--border);border-radius:8px;color:var(--ink-secondary, var(--muted));font-size:13px;line-height:1.6}.tax-disclaimer svg{flex:none;margin-top:2px;opacity:.7}.plan-tax-note,.plan-billed-note,.plan-trial-note{margin:4px 0 0;font-size:13px}.plan-trial-note{font-weight:600}.billing-toggle{display:inline-flex;gap:4px;margin:16px 0 4px;padding:4px;border:1px solid var(--border);border-radius:10px}.billing-toggle .btn{border:none;background:transparent;padding:6px 14px;font-size:14px}.billing-toggle .btn.active{background:var(--surface-2, rgba(127, 127, 127, .14));font-weight:600}.billing-toggle .badge{margin-left:8px;padding:2px 6px;border-radius:999px;font-size:11px;font-weight:700;background:var(--accent, #2f7d5b);color:#fff}.plan-features{list-style:none;padding:0;margin:0 0 20px;display:flex;flex-direction:column;gap:10px;flex:1}.plan-features li{display:flex;align-items:center;gap:8px;font-size:14px}.plan-check{flex-shrink:0}.plan-check.on{color:var(--net)}.plan-check.off{color:var(--muted)}.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}@media(max-width:720px){input,select,textarea,.rte-content .tiptap,.inline-select,.fee-input,.filters input,.filters select,.setting-input input,.tasks-board-select,.tasks-new-board input,.tasks-new-board select,.tasks-add-input,.task-status-select,.task-detail-input,.task-detail-select,.task-detail-textarea,.timer-sessions-filter,.timer-session-edit-task,.timer-session-edit-times input[type=time]{font-size:16px}.btn,.nav-item,.theme-menu-item{min-height:44px}.mobile-menu-btn,.logout-btn,.theme-toggle,.task-btn,.tasks-delete-board{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}.task-check{position:relative}.task-check:after{content:"";position:absolute;top:50%;left:50%;width:32px;height:44px;transform:translate(-50%,-50%)}.actions{flex-direction:column;align-items:stretch}}
