:root,[data-theme=dark]{--bg-primary:#1e1e2c;--bg-secondary:#272938;--bg-card:#ffffff0a;--bg-card-hover:#ffffff12;--bg-glass:#ffffff0f;--border:#ffffff14;--border-hover:#ffffff26;--text-primary:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#94a3b8;--accent:#3ecf8e;--accent-hover:#5fe3a8;--accent-glow:color-mix(in srgb, var(--accent) 30%, transparent);--accent-bg:color-mix(in srgb, var(--accent) 12%, transparent);--accent-bg-subtle:color-mix(in srgb, var(--accent) 6%, transparent);--accent-border:color-mix(in srgb, var(--accent) 30%, transparent);--accent-bg-hover:color-mix(in srgb, var(--accent) 15%, transparent);--danger:#f43f5e;--success:#3ecf8e;--warning:#f5a623;--scrollbar-thumb:#ffffff1a;--scrollbar-hover:#fff3;--weekend-bg:#ffffff03;--weekend-text:#f43f5e73;--month-border:#ffffff1f;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--shadow-sm:0 2px 8px #0003;--shadow-md:0 4px 16px #0000004d;--shadow-lg:0 8px 32px #0006;--shadow-glow:0 0 20px var(--accent-glow);--transition:.15s ease;--transition-colors:color .15s ease, background-color .15s ease, border-color .15s ease, opacity .15s ease}[data-theme=dark] .day-cell{background:#272938}[data-theme=dark] .badge,[data-theme=dark] .badge.multi-bar{background:#404457!important}[data-theme=light]{--bg-primary:#f8f9fa;--bg-secondary:#fff;--bg-card:#fff;--bg-card-hover:#f5f5f5;--bg-glass:#00000005;--border:#d4d4d4;--border2:#ecebeb;--border-hover:#bfbfbf;--text-primary:#171717;--text-secondary:#666;--text-muted:#666;--accent:#24b47e;--accent-hover:#38c793;--accent-glow:color-mix(in srgb, var(--accent) 10%, transparent);--accent-bg:color-mix(in srgb, var(--accent) 10%, transparent);--accent-bg-subtle:color-mix(in srgb, var(--accent) 5%, transparent);--accent-border:color-mix(in srgb, var(--accent) 25%, transparent);--accent-bg-hover:color-mix(in srgb, var(--accent) 12%, transparent);--danger:#e5484d;--success:#24b47e;--warning:#f5a623;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 2px 8px #0000000f;--shadow-lg:0 8px 24px #00000014;--shadow-glow:none;--scrollbar-thumb:#0000001a;--scrollbar-hover:#0000002e;--weekend-bg:#f43f5e14;--weekend-text:#e5484d;--month-border:#e6e6e6}[data-theme=light] .badge,[data-theme=light] .badge.multi-bar{box-shadow:0 5px 5px #0000001f;background:#fff!important}[data-theme=light] .badge:hover,[data-theme=light] .badge.multi-bar:hover{box-shadow:0 3px 12px #00000014}[data-theme=light] .badge-title{color:var(--text-primary)}[data-theme=light] .badge-client-corner{opacity:.8}[data-theme=light] .badge-client-corner.empty{opacity:0}[data-theme=light] .badge:hover .badge-client-corner.empty{opacity:.4}[data-theme=light] .badge-desc{color:var(--text-secondary)}[data-theme=light] .badge-context-menu{border:1px solid var(--border);background:#fff;box-shadow:0 6px 20px #0000001a}[data-theme=light] .bcm-item{color:var(--text-secondary)}[data-theme=light] .bcm-item:hover{background:var(--bg-card-hover);color:var(--text-primary)}[data-theme=light] .badge-menu-btn{border-color:var(--border);background:#fff}[data-theme=light] .badge-close{background:#e5484d14}[data-theme=light] .day-cell{background:#e6eaed;border:none;border-radius:10px}[data-theme=light] .day-cell:hover{background:#ebebeb}[data-theme=light] .day-cell.is-over{background:var(--accent-bg-subtle)}[data-theme=light] .day-number{color:var(--text-secondary)}[data-theme=light] .calendar-title{-webkit-text-fill-color:var(--text-primary)}[data-theme=light] .sidebar{border-right:1px solid var(--border);background:#fafafa}[data-theme=light] .sidebar-header h1{color:var(--text-primary)}[data-theme=light] .drop-zone{border-color:var(--border);background:var(--bg-card-hover)}[data-theme=light] .summary-panel{border-color:var(--border);background:#fff}[data-theme=light] .multi-bar{box-shadow:0 1px 3px #0000000d}[data-theme=light] .multi-bar:hover{box-shadow:0 3px 12px #00000014}[data-theme=light] .tl-cell,[data-theme=light] .tl-cell.inactive-day{background:#e6eaed}@font-face{font-family:TT Interphases Pro;src:url(/fonts/TT-Interphases-Pro-Trial-ExtraBold.woff)format("woff");font-weight:800;font-style:normal;font-display:swap}:root,[data-scale="3"]{--fs-xs:12px;--fs-sm:14px;--fs-md:15px;--fs-lg:18px;--fs-xl:26px;--fs-badge:14px;--fs-select:11px;--fs-days:11px;--fs-weekday:12px;--fs-daynum:14px;--fs-desc:12px;--fs-client:11px;--fs-icon:22px}[data-scale="1"]{--fs-xs:9px;--fs-sm:11px;--fs-md:12px;--fs-lg:14px;--fs-xl:20px;--fs-badge:11px;--fs-select:9px;--fs-days:9px;--fs-weekday:9px;--fs-daynum:11px;--fs-desc:9px;--fs-client:9px;--fs-icon:17px}[data-scale="2"]{--fs-xs:10px;--fs-sm:12px;--fs-md:13px;--fs-lg:16px;--fs-xl:23px;--fs-badge:12px;--fs-select:10px;--fs-days:10px;--fs-weekday:10px;--fs-daynum:12px;--fs-desc:10px;--fs-client:10px;--fs-icon:19px}[data-scale="4"]{--fs-xs:14px;--fs-sm:16px;--fs-md:17px;--fs-lg:21px;--fs-xl:30px;--fs-badge:16px;--fs-select:13px;--fs-days:13px;--fs-weekday:14px;--fs-daynum:16px;--fs-desc:14px;--fs-client:13px;--fs-icon:25px}[data-scale="5"]{--fs-xs:16px;--fs-sm:18px;--fs-md:20px;--fs-lg:24px;--fs-xl:34px;--fs-badge:18px;--fs-select:14px;--fs-days:14px;--fs-weekday:16px;--fs-daynum:18px;--fs-desc:16px;--fs-client:14px;--fs-icon:29px}[data-scale="6"]{--fs-xs:18px;--fs-sm:21px;--fs-md:23px;--fs-lg:27px;--fs-xl:39px;--fs-badge:21px;--fs-select:17px;--fs-days:17px;--fs-weekday:18px;--fs-daynum:21px;--fs-desc:18px;--fs-client:17px;--fs-icon:34px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:Source Sans Pro,monospace}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-hover)}.status-tag{font-size:var(--fs-select);white-space:nowrap;text-overflow:ellipsis;transition:var(--transition);border-radius:10px;align-items:center;gap:4px;padding:4px 10px;font-weight:700;display:flex;overflow:hidden}.status-tag:hover{background:color-mix(in srgb, currentColor 25%, transparent)}.status-tag-icon{width:var(--fs-select);height:var(--fs-select);flex-shrink:0}.client-tag{font-size:var(--fs-client);color:var(--text-primary);white-space:nowrap;transition:var(--transition);border-bottom:2px solid #0000;align-items:center;gap:4px;padding-bottom:1px;font-weight:600;display:flex}.client-tag-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.client-tag.empty{color:var(--text-muted);opacity:.5;border-bottom-color:#0000;font-weight:500}.client-tag:hover{color:var(--text-primary)}.designer-tag{font-size:var(--fs-client);color:var(--text-secondary);white-space:nowrap;transition:var(--transition);background:var(--bg-card);border:1px solid var(--border);border-radius:10px;justify-content:center;align-items:center;gap:4px;padding:2px 8px;font-weight:600;display:flex}.designer-tag-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.designer-tag.empty{color:var(--text-muted);font-weight:500}.designer-tag:hover{border-color:var(--accent);color:var(--text-primary)}.days-tag{font-size:var(--fs-xs);color:var(--text-muted);align-items:center;gap:3px;font-weight:500;display:flex}.dates-tag{font-size:var(--fs-xs);color:var(--text-muted);font-weight:500}.app-layout{height:100vh;display:flex;overflow:hidden}.sidebar{border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;width:330px;transition:width .2s;display:flex;overflow:hidden}.sidebar-collapsed{align-items:center;width:54px;padding-top:12px}.sidebar-collapsed-icons{flex-direction:column;align-items:center;gap:12px;padding:8px 0;display:flex}.sidebar-icon-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:6px;display:flex}.sidebar-icon-btn:hover{background:var(--bg-secondary);color:var(--text-primary)}.sidebar-collapse-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;margin-left:auto;padding:4px;display:flex}.sidebar-collapse-btn:hover{color:var(--text-primary)}.sidebar-header{justify-content:center;align-items:center;gap:10px;padding:20px 20px 0;display:flex}.sidebar-logo{object-fit:contain;flex-shrink:0;width:90px}.sidebar-header h1{font-size:var(--fs-sm);letter-spacing:-.3px;font-weight:700}.sidebar-content{flex-direction:column;flex:1;gap:20px;padding:15px;display:flex;overflow-y:auto}.hint{font-size:var(--fs-xs);color:var(--text-muted);background:var(--bg-card);border-radius:var(--radius-sm);border:1px solid var(--border);margin-top:6px;padding:6px 8px;line-height:1.4}.section-title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:1.2px;color:var(--text-muted);justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:700;display:flex}.section-toggle{cursor:pointer;transition:var(--transition);align-items:center;gap:4px;display:flex}.section-toggle:hover{color:var(--text-secondary)}.input-group{gap:8px;display:flex}.sidebar-create{flex-direction:column;gap:8px;display:flex}.sidebar-input-full{width:100%}.sidebar-create-btns{gap:6px;display:flex}.sidebar-create-btns .btn{font-size:var(--fs-xs);flex:1;justify-content:center;align-items:center;gap:4px;padding:6px 10px;display:flex}.input{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:var(--fs-sm);transition:var(--transition);outline:none;flex:1;padding:10px 14px;font-family:inherit}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.input::placeholder{color:var(--text-muted)}.btn{border-radius:var(--radius-sm);font-size:var(--fs-md);cursor:pointer;transition:var(--transition);border:none;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-family:inherit;font-weight:600;display:inline-flex}.btn-primary{color:var(--text-muted);border:1px solid var(--border);background:0 0}.btn-primary:hover{color:var(--accent);border-color:var(--accent)}.btn-icon{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);width:32px;height:32px;color:var(--text-secondary);cursor:pointer;transition:var(--transition);justify-content:center;align-items:center;padding:0;display:flex}.btn-icon:hover{background:var(--bg-card-hover);color:var(--text-primary);border-color:var(--border-hover)}.status-list{flex-direction:column;gap:4px;display:flex}.status-item{border-radius:var(--radius-sm);font-size:var(--fs-sm);transition:var(--transition);align-items:center;gap:10px;padding:8px 10px;display:flex}.status-item:hover{background:var(--bg-card)}.status-dot{border-radius:50%;flex-shrink:0;width:15px;height:15px}.status-name{flex:1;font-weight:500}.status-delete{opacity:0;color:var(--danger);cursor:pointer;transition:var(--transition);background:0 0;border:none;padding:2px;line-height:1;display:flex}.status-item:hover .status-delete{opacity:1}.status-edit{opacity:0;color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;padding:2px;display:flex}.status-item:hover .status-edit{opacity:1}.status-edit:hover{color:var(--accent)}.status-edit-row{align-items:center;gap:8px;width:100%;display:flex}.status-color-edit{cursor:pointer;border:2px solid var(--border-hover);border-radius:50%;flex-shrink:0;width:24px;height:24px;position:relative;overflow:hidden}.status-color-edit input{cursor:pointer;opacity:0;width:50px;height:50px;position:absolute;inset:-10px}.status-form{gap:6px;margin-bottom:8px;animation:.2s slideDown;display:flex}.color-picker{border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:var(--bg-card);width:38px;height:38px;padding:2px}.drop-zone{background:var(--bg-card);border:2px dashed var(--border);border-radius:var(--radius-md);min-height:120px;transition:var(--transition);flex-direction:column;flex:1;gap:12px;padding:14px;display:flex;overflow:visible}.drop-zone.is-over{border-color:var(--accent);background:var(--accent-bg-subtle);box-shadow:inset 0 0 20px var(--accent-bg-subtle)}.drop-zone-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);justify-content:center;align-items:center;gap:6px;font-weight:600;display:flex}.drop-zone-projects{flex-direction:column;gap:8px;display:flex}.drop-zone .badge{height:130px;min-height:auto;overflow:hidden}.drop-zone .badge-title{-webkit-line-clamp:2}.drop-zone .badge-icon-picker,.drop-zone .badge-status-picker,.drop-zone .badge-client-picker{margin-top:0;margin-bottom:4px;position:absolute;top:auto;bottom:100%}.main-content{background:var(--bg-primary);flex-direction:column;flex:1;padding:0;display:flex;overflow:hidden}.main-content-header{z-index:20;background:var(--bg-primary);flex-shrink:0;padding:20px 15px 0;position:sticky;top:0}.main-content-body{flex-direction:column;flex:1;min-height:0;padding:0 15px 24px;display:flex;overflow-y:auto}.user-tabs{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:0;margin-bottom:16px;display:flex;overflow-x:auto}.user-tab{font-size:var(--fs-sm);color:var(--text-muted);cursor:pointer;transition:var(--transition);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;align-items:center;gap:6px;padding:8px 14px;font-weight:600;display:flex}.user-tab:hover{color:var(--text-primary)}.user-tab.active{color:var(--text-primary);border-bottom-color:var(--accent)}.user-tab-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.user-tab-delete{color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;margin-left:2px;padding:0;display:flex}.user-tab-delete:hover{color:var(--danger)}.user-tab-count{font-size:var(--fs-xs);color:var(--text-muted);padding:0;font-weight:500}.user-tab.active .user-tab-count{color:var(--accent)}.user-tab.add{color:var(--text-muted);background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 10px}.user-tab.add:hover{color:var(--accent)}.user-summary{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);margin-top:20px;padding:16px}.user-summary-header{font-size:var(--fs-sm);color:var(--text-primary);align-items:center;gap:8px;margin-bottom:12px;font-weight:700;display:flex}.user-summary-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.user-summary-stats{font-weight:500;font-size:var(--fs-xs);color:var(--text-muted);margin-left:auto}.user-summary-list{flex-direction:column;gap:4px;display:flex}.user-summary-item{border-radius:var(--radius-sm);font-size:var(--fs-xs);transition:var(--transition);align-items:center;gap:8px;padding:6px 8px;display:flex}.user-summary-item:hover{background:var(--bg-card-hover)}.user-summary-item-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.user-summary-item-title{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;overflow:hidden}.user-summary-item-dates{color:var(--text-muted);white-space:nowrap}.user-summary-item-days{color:var(--accent);white-space:nowrap;font-weight:700}.view-toolbar{flex-shrink:0;justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.calendar-nav{align-items:center;gap:12px;display:flex}.calendar-title{font-size:var(--fs-xl);letter-spacing:-.5px;background:linear-gradient(135deg, var(--text-primary), var(--text-secondary));-webkit-text-fill-color:transparent;text-align:center;-webkit-background-clip:text;min-width:240px;font-weight:800}.nav-btn{width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex}.nav-btn:hover{color:var(--text-primary);background:var(--bg-card)}.view-actions{align-items:center;gap:8px;display:flex}.calendar-filters{align-items:center;gap:6px;display:flex}.cal-filter{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;border-radius:6px;max-width:160px;padding:4px 8px;font-size:12px}.cal-filter:focus{outline:2px solid var(--accent);outline-offset:-1px}.cal-filter-clear{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:13px}.cal-filter-clear:hover{color:var(--danger,#ef4444);background:var(--bg-card)}.app-version{font-size:var(--fs-xs);color:var(--text-muted);opacity:.5;font-weight:500}.theme-btn{width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex}.theme-btn:hover{color:var(--accent);background:var(--bg-card)}.theme-btn:disabled{opacity:.25;cursor:default;pointer-events:none}.notes-btn{width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;display:flex}.notes-btn:hover{color:var(--text-primary);background:var(--bg-card)}.notes-btn.active{color:var(--accent)}.today-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;font-size:var(--fs-sm);transition:var(--transition);background:0 0;border-radius:8px;padding:5px 12px;font-family:inherit;font-weight:600}.today-btn:hover{color:var(--accent);border-color:var(--accent)}.view-toggle{border:1px solid var(--border);background:0 0;border-radius:8px;display:flex}.view-toggle-btn{color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;align-items:center;padding:5px 10px;display:flex}.view-toggle-btn.active{color:var(--accent);background:var(--bg-card)}.view-toggle-btn:not(.active):hover{color:var(--text-primary)}.calendar-weekdays{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;display:grid}.weekday{text-align:center;font-size:var(--fs-weekday);text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:8px 0;font-weight:700}.calendar-container{position:relative}.calendar-fade{opacity:1;transition:opacity .4s}.cal-hidden{opacity:0;transition:none}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:5px;display:grid}.day-cell{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);min-height:110px;transition:var(--transition);z-index:1;flex-direction:column;gap:8px;padding:8px;display:flex;position:relative}.day-cell:hover{background:var(--bg-card-hover);border-color:var(--border-hover)}.day-cell.is-over{border-color:var(--accent);background:var(--accent-bg);box-shadow:inset 0 0 16px var(--accent-bg-subtle)}.day-cell.other-month{opacity:.35}.day-number{font-size:var(--fs-daynum);color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;margin-bottom:2px;font-weight:600;display:flex}.day-number.is-today{background:var(--accent);color:#fff;font-weight:700}.day-cell:has(.is-today){background:var(--accent-bg);box-shadow:inset 0 0 0 1px var(--accent-border)}@keyframes todayPulse{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}.today-flash{animation:.4s ease-in-out 2 todayPulse}.day-number.is-inactive{color:var(--danger);background:#f43f5e26;font-weight:700}.day-number.is-today.is-inactive{background:var(--accent);color:#fff;outline:2.5px solid var(--danger);outline-offset:2px}.day-cell.inactive-day{opacity:.3}.day-cell.inactive-day:has(.is-today){opacity:1}.weekday.inactive{color:var(--danger)}.day-projects{flex-direction:column;flex:1;gap:3px;display:flex}.multi-bar{z-index:5;position:absolute}.multi-bar:hover{z-index:10}.multi-bar.picker-open{z-index:100;overflow:visible}.multi-bar.swap-over{outline:2px dashed var(--accent);outline-offset:2px}.badge-overdue-label{font-size:var(--fs-xs);color:var(--danger);background:#f43f5e26;border-radius:4px;padding:1px 6px;font-weight:700}.multi-bar.no-drag{cursor:default}.multi-bar.fragment-bar{pointer-events:none;z-index:2;cursor:default}.multi-bar.fragment-bar .badge-body,.multi-bar.fragment-bar .badge-menu-area{pointer-events:auto}.fragment-checkbox{cursor:pointer;width:24px;height:24px;accent-color:var(--accent);appearance:none;border:2px solid var(--text-muted);z-index:20;pointer-events:auto;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:absolute;top:8px;right:8px}.fragment-checkbox:checked{background:var(--accent);border-color:var(--accent)}.fragment-checkbox:checked:after{content:"✓";color:#fff;font-size:13px;font-weight:700}.fragment-checkbox-disabled{opacity:.3;cursor:not-allowed}.fragment-checkbox-cancelled:checked{background:#ef4444;border-color:#ef4444}.fragment-checkbox-cancelled:checked:after{content:"✕"}.badge-user-label{font-size:var(--fs-days);white-space:nowrap;opacity:.7;margin-left:auto;font-weight:600}.badge:hover .badge-bottom-tag.empty{opacity:1}.badge{cursor:grab;user-select:none;height:150px;transition:var(--transition);background:linear-gradient(135deg, color-mix(in srgb, var(--badge-color,transparent) 18%, transparent), color-mix(in srgb, var(--badge-color,transparent) 8%, transparent)), var(--bg-secondary);border:none;border-radius:10px;align-items:stretch;padding:24px 14px 14px;display:flex;position:relative;overflow:visible;box-shadow:0 2px 8px #00000014,0 1px 2px #0000000a}.badge:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001f,0 2px 4px #0000000f}.badge.is-dragging{opacity:.3;transform:scale(.95)}.badge-client-corner{font-size:var(--fs-client);cursor:pointer;white-space:nowrap;transition:var(--transition);border:none;border-radius:20px;flex-shrink:0;align-self:flex-end;padding:2px 10px;font-weight:700}.badge-client-corner:hover{transform:scale(1.05)}.badge-client-corner.empty{border:1.5px dashed var(--text-muted);color:var(--text-muted);background:var(--bg-card);opacity:0;font-weight:500}.badge:hover .badge-client-corner.empty{opacity:1}.badge-bottom-row{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.badge-body{flex-direction:column;flex:1;justify-content:space-between;gap:4px;min-width:0;display:flex;position:relative}.tl-badge-labels{z-index:2;justify-content:space-around;align-items:center;display:flex;overflow:hidden}.tl-badge-label{color:var(--text-primary);opacity:.5;-webkit-line-clamp:2;text-align:center;-webkit-box-orient:vertical;max-width:180px;font-size:.7em;font-weight:600;line-height:1.3;display:-webkit-box;overflow:hidden}.badge-active-dot{background:#10b981;border-radius:50%;width:6px;height:6px;animation:1.5s ease-in-out infinite badge-dot-pulse;position:absolute;top:4px;left:-8px}@keyframes badge-dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}}.badge-row-top{align-items:flex-start;gap:6px;display:flex}.badge-title-group{flex-direction:column;gap:1px;min-width:0;display:flex}.badge-days-inline{color:var(--text-muted);align-items:center;gap:2px;margin-left:6px;font-size:.75em;font-weight:500;display:inline-flex}.badge-subtask{color:var(--text-secondary)}.badge-sigla{color:var(--text-muted);font-size:.85em;font-weight:600}.badge-board-tag{font-size:var(--fs-xs);white-space:nowrap;border-radius:10px;padding:4px 10px;font-weight:600;display:inline-block}.badge-plan-label{color:var(--accent);opacity:.8;margin-left:6px;font-size:.7em;font-weight:600}.badge-client-prefix{cursor:pointer;font-weight:700}.badge-client-label{font-size:var(--fs-xs,.75em);cursor:pointer;margin-bottom:2px;font-weight:700}.badge-client-select{font-size:var(--fs-xs,.75em);cursor:pointer;appearance:none;background:0 0;border:none;outline:none;margin-bottom:2px;padding:0;font-family:inherit;font-weight:700}.cpv-client-inline{font-weight:700}.cpv-client-inline.empty{opacity:.5;font-weight:500}.cpv-title .badge-client-select{font-size:inherit}.badge-client-solid{font-size:var(--fs-xs,.75em);color:#fff;white-space:nowrap;border-radius:6px;padding:4px 10px;font-weight:600}.badge-client-solid.empty{color:var(--text-muted);padding:2px 6px;font-weight:500;background:0 0!important}.badge-status-solid{font-size:var(--fs-xs,.75em);white-space:nowrap;border-radius:20px;padding:4px 10px;font-weight:600}.badge-paused{opacity:.6;border:2px dashed #6b7280!important}.badge-status-select{font-size:var(--fs-xs,.75em);white-space:nowrap;cursor:pointer;text-align:center;border:none;border-radius:20px;outline:none;padding:2px 8px;font-family:inherit;font-weight:600}.badge-frag-client{font-size:var(--fs-client);color:var(--text-primary);white-space:nowrap;border-bottom:2px solid #0000;margin-left:auto;padding-bottom:1px;font-weight:600}.badge-status-dot{display:none}.badge-icon{cursor:pointer;transition:var(--transition);font-size:var(--fs-icon);color:var(--text-primary);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.badge-icon.complex{cursor:pointer;transition:var(--transition);border-radius:6px;padding:2px}.badge-icon.complex:hover{background:color-mix(in srgb, var(--sc) 15%, transparent);color:var(--sc)}.badge-icon-picker{z-index:50;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);width:210px;box-shadow:var(--shadow-lg);flex-wrap:wrap;gap:4px;margin-top:4px;padding:8px;display:flex;position:absolute;top:100%;left:0}.badge-icon-opt{cursor:pointer;width:38px;height:38px;transition:var(--transition);background:0 0;border:1.5px solid #0000;border-radius:6px;justify-content:center;align-items:center;display:flex}.badge-icon-opt:hover{background:var(--bg-card-hover);border-color:var(--border)}.badge-icon-opt.active{border-color:var(--accent);background:var(--bg-card)}.badge-tag-dot{cursor:pointer;width:10px;height:10px;transition:var(--transition);border-radius:50%;flex-shrink:0}.badge-tag-dot.empty{border:2px dashed var(--text-muted);background:0 0}.badge-tag-dot:hover{transform:scale(1.2)}.badge-title{-webkit-line-clamp:3;font-weight:700;font-size:var(--fs-badge);color:var(--text-primary);-webkit-box-orient:vertical;flex:1;line-height:1.35;display:-webkit-box;overflow:hidden}.badge-parent-label{font-size:var(--fs-xs);color:var(--text-muted);opacity:.7;white-space:nowrap;text-overflow:ellipsis;font-weight:600;line-height:1.2;display:block;overflow:hidden}.badge-title-input{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-size:var(--fs-badge);border-radius:4px;outline:none;flex:1;min-width:0;padding:2px 6px;font-family:inherit;font-weight:600}.badge-status-name{display:none}.badge-status-picker{z-index:50;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);flex-direction:column;gap:2px;margin-top:4px;padding:6px;display:flex;position:absolute;top:100%;left:0}.badge-status-opt{color:var(--text-secondary);font-size:var(--fs-select);cursor:pointer;text-align:left;transition:var(--transition);background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:3px 6px;font-family:inherit;display:flex}.badge-status-opt:hover{background:var(--bg-card);color:var(--text-primary)}.badge-status-opt.active{color:var(--accent);font-weight:600}.badge-delete{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:var(--transition);opacity:0;border-radius:6px;flex-shrink:0;padding:4px;line-height:1;display:flex}.badge:hover .badge-delete{opacity:1}.badge-delete:hover{color:var(--danger);border-color:var(--danger);background:#f43f5e1a}.badge-menu-area{z-index:10;position:absolute;top:4px;right:4px}.badge-menu-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:var(--transition);opacity:.6;border-radius:6px;padding:3px;line-height:1;display:flex}.badge:hover .badge-menu-btn{opacity:1}.badge-menu-btn:hover{color:var(--text-primary);border-color:var(--border-hover);background:var(--bg-card-hover)}.badge-menu-select{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;appearance:none;opacity:.6;transition:var(--transition);text-align:center;border-radius:6px;outline:none;width:24px;height:22px;padding:2px 4px;font-family:inherit;font-size:12px}.badge:hover .badge-menu-select{opacity:1}.badge-menu-select:hover{color:var(--text-primary);border-color:var(--border-hover)}.bcm-item{width:100%;color:var(--text-secondary);cursor:pointer;text-align:left;transition:var(--transition);background:0 0;border:none;border-radius:5px;align-items:center;gap:8px;padding:7px 10px;font-family:inherit;font-size:12px;display:flex}.bcm-item:hover{background:var(--bg-card-hover);color:var(--text-primary)}.bcm-danger{color:var(--danger)!important}.bcm-danger:hover{background:#ff3b301a;color:var(--danger)!important}.bcm-divider{background:var(--border);height:1px;margin:3px 0}.badge-close{color:var(--danger);cursor:pointer;transition:var(--transition);opacity:0;z-index:3;background:#f43f5e26;border:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;padding:4px;line-height:1;display:flex;position:absolute;top:4px;right:4px}.badge:hover .badge-close{opacity:1}.badge-close:hover{background:var(--danger);color:#fff}.badge-log{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:var(--transition);opacity:0;z-index:3;border-radius:4px;padding:3px;line-height:1;display:flex;position:absolute;bottom:4px;right:4px}.badge:hover .badge-log{opacity:.6}.badge-log:hover{color:var(--accent);border-color:var(--accent);opacity:1!important}.badge-resize{cursor:ew-resize;width:14px;color:var(--text-muted);opacity:0;transition:var(--transition);justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;right:0}.badge:hover .badge-resize{opacity:.5}.badge-resize:hover{opacity:1!important}.badge-desc{font-size:var(--fs-desc);color:var(--text-secondary);cursor:text;max-height:4.5em;padding-left:24px;line-height:1.3;overflow-y:auto}.badge-desc.placeholder{opacity:.35}.badge-progress-badge{background:var(--accent);color:#fff;border-radius:8px;padding:4px 10px;font-size:.65em;font-weight:700;line-height:1.4}.badge.user-dimmed{opacity:.4}.badge.user-next{box-shadow:0 0 0 2px var(--accent), 0 2px 8px #6366f14d}.badge-meta-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.badge-client-picker{z-index:50;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);flex-direction:column;gap:2px;margin-top:4px;padding:6px;display:flex;position:absolute;top:100%;right:0}.badge-client-opt{color:var(--text-secondary);font-size:var(--fs-select);cursor:pointer;text-align:left;transition:var(--transition);background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:3px 6px;font-family:inherit;display:flex}.badge-client-opt:hover{background:var(--bg-card);color:var(--text-primary)}.badge-client-opt.active{color:var(--accent);font-weight:600}.badge-desc-input{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-size:var(--fs-desc);resize:none;border-radius:4px;outline:none;width:100%;min-height:28px;padding:3px 5px;font-family:inherit;line-height:1.3}.badge-link-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:var(--transition);opacity:0;z-index:3;border-radius:6px;padding:4px;line-height:1;display:flex;position:absolute;bottom:6px;right:48px}.badge:hover .badge-link-btn{opacity:1}.badge-link-btn:hover{color:var(--text-primary);border-color:var(--border-hover)}.badge-link-btn.has-url{color:var(--accent)}.badge-link-btn.has-url:hover{color:var(--accent-hover);border-color:var(--accent)}.badge-url-popup{z-index:50;padding:4px;position:absolute;bottom:-4px;left:0;right:0;transform:translateY(100%)}.badge-url-input{background:var(--bg-secondary);border:1px solid var(--accent);color:var(--text-primary);width:100%;box-shadow:var(--shadow-lg);border-radius:6px;outline:none;padding:6px 10px;font-family:inherit;font-size:12px}.badge-url-input:focus{box-shadow:var(--shadow-lg), 0 0 0 2px var(--accent-glow)}.badge-color-btn{cursor:pointer;width:14px;height:14px;transition:var(--transition);border:2px solid #fff6;border-radius:50%;flex-shrink:0;padding:0}.badge-color-btn:hover{border-color:#fff;transform:scale(1.15)}.color-dots{gap:5px;padding:4px 0 2px;display:flex}.color-dot{cursor:pointer;width:16px;height:16px;transition:var(--transition);border:2px solid #0000;border-radius:50%;padding:0}.color-dot:hover{transform:scale(1.2)}.color-dot.active{border-color:#fff;box-shadow:0 0 6px #ffffff80}.tl-gantt-months{z-index:4;display:flex;position:sticky;top:0}.tl-gantt-month{font-size:var(--fs-sm);color:#fff;text-transform:uppercase;letter-spacing:1px;background:var(--bg-secondary);border-bottom:2px solid var(--border);white-space:nowrap;padding:8px 14px;font-weight:800;overflow:hidden}.tl-gantt-month.current{background:var(--accent)}.tl-gantt-body{position:relative}.tl-gantt-days{z-index:3;display:flex;position:sticky;top:0}.tl-day-cell{border-right:1px solid var(--border);background:var(--bg-card);flex-direction:column;flex-shrink:0;align-items:center;gap:2px;min-height:100%;padding:6px 0;display:flex}.tl-day-cell.is-over{background:var(--accent-bg)}.tl-day-cell.inactive-day{opacity:.3}.tl-day-cell-dow{font-size:var(--fs-xs);text-transform:uppercase;color:var(--text-muted);font-weight:700}.tl-day-cell-num{font-size:var(--fs-daynum);color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-weight:700;display:flex}.tl-day-cell-num.is-today{background:var(--accent);color:#fff;font-weight:700}.tl-day-cell-num.is-inactive{color:var(--danger);background:#f43f5e26}.tl-outer{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;position:relative}.tl-project-filter{z-index:10;background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;border-radius:4px;max-width:200px;padding:2px 8px;font-size:.75em;position:absolute;top:4px;left:12px}.tl-project-filter:focus{border-color:var(--accent);outline:none}.tl-labels-toggle{z-index:10;background:var(--bg-secondary);border:1px solid var(--border);cursor:pointer;color:var(--text-muted);transition:var(--transition);border-radius:4px;padding:2px 8px;font-size:.75em;position:absolute;top:4px;right:12px}.tl-labels-toggle:hover{color:var(--accent);border-color:var(--accent)}.tl-labels-toggle[title]:hover:after{content:attr(title);background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);z-index:100;pointer-events:none;white-space:nowrap;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:600;position:absolute;bottom:-26px;right:0;box-shadow:0 2px 8px #00000026}.tl-zoom-bar{align-self:flex-end;align-items:center;gap:6px;display:flex}.tl-zoom-btn{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;transition:var(--transition);justify-content:center;align-items:center;display:flex}.tl-zoom-btn:hover:not(:disabled){background:var(--bg-card-hover);color:var(--text-primary)}.tl-zoom-btn:disabled{opacity:.3;cursor:default}.tl-zoom-label{font-size:var(--fs-xs);color:var(--text-muted);text-align:center;width:16px;font-weight:700}.tl-scroll{border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);flex:1;overflow:auto}.tl-scroll::-webkit-scrollbar{height:14px}.tl-scroll::-webkit-scrollbar-track{background:var(--bg-card);border-radius:7px}.tl-scroll::-webkit-scrollbar-thumb{background:var(--scrollbar-hover);border:3px solid var(--bg-card);border-radius:7px}.tl-scroll::-webkit-scrollbar-thumb:hover{background:var(--accent)}.tl-table{flex-direction:column;display:flex}.tl-month-row{z-index:4;background:var(--accent);border-bottom:2px solid var(--border);display:grid;position:sticky;top:0}.tl-month-label{font-size:var(--fs-sm);color:var(--text-primary);text-transform:uppercase;letter-spacing:1px;border-right:2px solid var(--border);border-bottom:2px solid var(--border);white-space:nowrap;padding:6px 14px;font-weight:800;overflow:hidden}.tl-month-label.current{border-bottom:2px solid var(--accent);font-weight:900}.tl-day-header{z-index:3;background:var(--bg-secondary);border-bottom:2px solid var(--border);display:grid;position:sticky;top:32px}.tl-day-hcell{border-right:1px solid var(--border);flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:6px 0;display:flex}.tl-day-hcell.month-start{border-left:2px solid var(--month-border)}.tl-day-hcell.weekend{background:var(--weekend-bg)}.tl-day-hcell.inactive{opacity:.5}.tl-day-dow{font-size:var(--fs-xs);text-transform:uppercase;color:var(--text-muted);font-weight:700}.tl-day-hcell.weekend .tl-day-dow{color:var(--weekend-text)}.tl-day-num{font-size:var(--fs-daynum);color:var(--text-secondary);border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-weight:700;display:flex}.tl-day-num.today{background:var(--accent);color:#fff;font-weight:700}.tl-day-num.is-inactive{color:var(--danger);background:#f43f5e26;font-weight:700}.tl-day-num.today.is-inactive{background:var(--accent);color:#fff;outline:2.5px solid var(--danger);outline-offset:2px}.tl-row{position:relative}.tl-row-cells{z-index:1;display:grid;position:absolute;inset:0}.tl-row-blocks{z-index:2;pointer-events:none;align-items:stretch;height:100%;display:grid;position:relative}.tl-row-blocks>*{pointer-events:auto}.tl-cell{border-right:1px solid var(--border);cursor:pointer;transition:background .1s}.tl-cell:hover{background:var(--bg-card-hover)}.tl-cell.month-start{border-left:2px solid var(--month-border)}.tl-cell.weekend{background:var(--weekend-bg)}.tl-cell.today{background:var(--accent-bg);box-shadow:inset 0 0 0 1px var(--accent-border);border-color:var(--accent)}.tl-cell.is-over{background:var(--accent-bg)}.tl-cell.inactive-day{opacity:.3;background:var(--bg-card)}.tl-block{background:var(--bg-secondary);color:var(--text-primary);cursor:grab;user-select:none;box-shadow:var(--shadow-sm);border:1px solid var(--border);border-radius:6px;flex-direction:column;gap:6px;margin:5px 3px;padding:10px 12px;transition:box-shadow .15s,opacity .15s;display:flex;position:relative;overflow:hidden}.tl-block:hover{box-shadow:var(--shadow-md);z-index:5}.tl-block.is-dragging{opacity:.2}.tl-block-header{align-items:flex-start;gap:6px;display:flex}.tl-block-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;margin-top:3px}.tl-block-title{font-size:var(--fs-badge);color:var(--text-primary);-webkit-line-clamp:2;cursor:text;-webkit-box-orient:vertical;flex:1;font-weight:700;line-height:1.3;display:-webkit-box;overflow:hidden}.tl-block-title-input{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-size:var(--fs-badge);border-radius:4px;outline:none;flex:1;min-width:0;padding:3px 6px;font-family:inherit;font-weight:700}.tl-block-desc{font-size:var(--fs-desc);color:var(--text-secondary);-webkit-line-clamp:3;cursor:text;-webkit-box-orient:vertical;margin:0;line-height:1.35;display:-webkit-box;overflow:hidden}.tl-block-desc-input{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-size:var(--fs-desc);resize:none;border-radius:4px;outline:none;width:100%;min-height:36px;padding:4px 6px;font-family:inherit;line-height:1.35}.tl-block-footer{align-items:center;gap:6px;margin-top:auto;display:flex}.tl-block-select{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border);font-size:var(--fs-select);cursor:pointer;border-radius:4px;padding:3px 6px;font-family:inherit}.tl-block-days{font-size:var(--fs-days);color:var(--text-muted);white-space:nowrap;align-items:center;gap:3px;font-weight:600;display:flex}.tl-block-remove{color:var(--text-muted);cursor:pointer;opacity:0;transition:var(--transition);background:0 0;border:none;display:flex;position:absolute;top:6px;right:6px}.tl-block:hover .tl-block-remove{opacity:1}.tl-block-remove:hover{color:var(--danger)}.tl-block-resize{cursor:ew-resize;width:14px;color:var(--text-muted);opacity:0;transition:var(--transition);justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;right:0}.tl-block:hover .tl-block-resize{opacity:.5}.tl-block-resize:hover{opacity:1!important}.tl-empty{text-align:center;color:var(--text-muted);font-size:var(--fs-sm);z-index:2;padding:40px;position:relative}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fade-in{animation:.3s fadeIn}.summary-panel{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);flex-shrink:0;margin-top:16px;overflow:hidden}.summary-toggle{cursor:pointer;font-size:var(--fs-sm);color:var(--text-secondary);transition:var(--transition);align-items:center;gap:8px;padding:10px 14px;font-weight:600;display:flex}.summary-toggle:hover{background:var(--bg-card-hover);color:var(--text-primary)}.summary-total{font-size:var(--fs-xs);background:var(--accent);color:#fff;border-radius:10px;margin-left:auto;padding:2px 8px;font-weight:700}.summary-body{flex-direction:column;gap:14px;padding:0 14px 14px;animation:.2s slideDown;display:flex}.summary-cols{grid-template-columns:1fr 1fr;gap:16px;display:grid}.summary-group{flex-direction:column;gap:6px;display:flex}.summary-group-title{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);font-weight:700}.stat-bar{flex-direction:column;gap:3px;display:flex}.stat-bar-header{align-items:center;gap:6px;font-size:12px;display:flex}.stat-bar-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.stat-bar-label{color:var(--text-primary);flex:1;font-weight:500}.stat-bar-count{color:var(--text-muted);font-size:11px;font-weight:700}.stat-bar-track{background:var(--bg-card-hover);border-radius:2px;height:4px;overflow:hidden}.stat-bar-fill{border-radius:2px;height:100%;transition:width .3s}.summary-weeks{flex-direction:column;gap:4px;display:flex}.summary-week{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.summary-week-header{cursor:pointer;color:var(--text-secondary);transition:var(--transition);align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:600;display:flex}.summary-week-header:hover{background:var(--bg-card-hover)}.summary-week-count{color:var(--text-muted);margin-left:auto;font-size:11px;font-weight:600}.summary-week-body{border-top:1px solid var(--border);flex-direction:column;gap:10px;padding:8px 10px;animation:.15s slideDown;display:flex}.summary-user{font-size:var(--fs-xs);color:var(--text-muted);align-items:center;gap:4px;display:flex}.summary-user-dot{border-radius:50%;width:8px;height:8px}.summary-list-section{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.summary-list-toggle{cursor:pointer;color:var(--text-secondary);transition:var(--transition);align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:600;display:flex}.summary-list-toggle:hover{background:var(--bg-card-hover)}.summary-project-list{border-top:1px solid var(--border);flex-direction:column;max-height:300px;display:flex;overflow-y:auto}.summary-project-item{border-bottom:1px solid var(--border);transition:var(--transition);align-items:center;gap:8px;padding:7px 10px;font-size:12px;display:flex}.summary-project-item:last-child{border-bottom:none}.summary-project-item:hover{background:var(--bg-card-hover)}.summary-project-title{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;overflow:hidden}.summary-project-client{white-space:nowrap;background:0 0;border:1px solid;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:700}.summary-project-dates{color:var(--text-muted);white-space:nowrap;font-size:11px}.summary-project-days{color:var(--text-muted);white-space:nowrap;align-items:center;gap:2px;font-size:11px;font-weight:600;display:flex}.drag-overlay .badge{pointer-events:none}.modal-overlay{z-index:1000;backdrop-filter:blur(4px);background:#0009;justify-content:center;align-items:center;animation:.15s fadeIn;display:flex;position:fixed;inset:0}.modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);width:420px;max-width:90vw;max-height:80vh;box-shadow:var(--shadow-lg);flex-direction:column;gap:16px;padding:24px;display:flex}.modal-lg{width:520px}.modal-title{font-size:var(--fs-lg);font-weight:700}.modal-subtitle{font-size:var(--fs-sm);color:var(--text-secondary);line-height:1.5}.modal-input{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;min-height:80px;color:var(--text-primary);font-size:var(--fs-sm);resize:vertical;outline:none;padding:10px 14px;font-family:inherit}.modal-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.modal-cancel{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary)}.modal-cancel:hover{background:var(--bg-card-hover);color:var(--text-primary)}.modal-help{width:560px;max-height:85vh}.help-content{flex-direction:column;gap:16px;max-height:60vh;display:flex;overflow-y:auto}.help-section h4{font-size:var(--fs-sm);color:var(--accent);margin-bottom:6px;font-weight:700}.help-section ul{flex-direction:column;gap:4px;list-style:none;display:flex}.help-section li{font-size:var(--fs-xs);color:var(--text-secondary);line-height:1.5}.help-section li strong{color:var(--text-primary)}.help-changelog p{font-size:var(--fs-xs);color:var(--text-secondary);padding:2px 0;line-height:1.6}.help-changelog p strong{color:var(--accent)}.user-color-picker{flex-wrap:wrap;gap:8px;display:flex}.user-color-dot{cursor:pointer;width:28px;height:28px;transition:var(--transition);border:3px solid #0000;border-radius:50%;padding:0}.user-color-dot:hover{transform:scale(1.15)}.user-color-dot.active{border-color:#fff;box-shadow:0 0 8px #fff6}.modal-project-name{font-size:var(--fs-sm);color:var(--text-primary);margin-top:-10px;font-weight:600}.log-empty{font-size:var(--fs-sm);color:var(--text-muted);text-align:center;padding:20px 0}.log-timeline{flex-direction:column;max-height:400px;display:flex;overflow-y:auto}.log-entry{gap:12px;display:flex}.log-dot-col{flex-direction:column;flex-shrink:0;align-items:center;width:12px;display:flex}.log-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:10px;height:10px;margin-top:4px}.log-line{background:var(--border);flex:1;width:2px;margin:4px 0}.log-content{flex-direction:column;flex:1;gap:4px;padding-bottom:16px;display:flex}.log-time{font-size:var(--fs-xs);color:var(--text-muted);font-weight:500}.log-dates{font-size:var(--fs-sm);align-items:center;gap:6px;display:flex}.log-date-old{color:var(--text-muted);text-decoration:line-through}.log-arrow{color:var(--text-muted)}.log-date-new{color:var(--accent);font-weight:600}.log-note{font-size:var(--fs-sm);color:var(--text-secondary);font-style:italic;line-height:1.4}.log-dot.note{background:var(--warning)}.log-add-note{gap:8px;display:flex}.log-add-note .input{flex:1;padding:8px 12px}.log-add-note .btn{padding:8px 14px}.log-entry-group{flex-direction:column;display:flex}.log-reply-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-family:inherit;font-size:11px;font-weight:500;transition:color .15s}.log-reply-btn:hover{color:var(--accent)}.log-entry.log-reply{padding-left:24px}.log-dot.reply{background:var(--text-muted);width:6px;height:6px;margin-top:6px}.log-note-reply{color:var(--text-primary);background:var(--bg-card);border-left:2px solid var(--accent);border-radius:6px;padding:4px 8px;font-style:normal}.log-reply-input{gap:6px;padding-bottom:12px;padding-left:36px;display:flex}.log-reply-input .input{font-size:var(--fs-xs);flex:1;padding:6px 10px}.log-reply-input .btn{font-size:var(--fs-xs);padding:6px 10px}.modal-import{width:700px;max-height:85vh}.modal-import .modal-title{align-items:center;gap:8px;display:flex}.import-textarea{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;min-height:180px;color:var(--text-primary);font-size:var(--fs-sm);resize:vertical;tab-size:4;outline:none;padding:12px 14px;font-family:Courier New,monospace;line-height:1.5}.import-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.import-textarea::placeholder{color:var(--text-muted);font-size:var(--fs-xs)}.import-checkbox{font-size:var(--fs-sm);color:var(--text-secondary);cursor:pointer;align-items:center;gap:8px;display:flex}.import-checkbox input{accent-color:var(--accent)}.import-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:50vh;overflow:auto}.import-table{border-collapse:collapse;width:100%;font-size:var(--fs-xs)}.import-table th{z-index:2;background:var(--bg-secondary);text-align:left;border-bottom:2px solid var(--border);vertical-align:top;padding:8px;position:sticky;top:0}.import-table td{border-bottom:1px solid var(--border);color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;max-width:200px;padding:6px 8px;overflow:hidden}.import-table td.import-skip{opacity:.3}.import-table tr:hover td{background:var(--bg-card-hover)}.import-col-header{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin-bottom:4px;font-weight:600;overflow:hidden}.import-select{width:100%;font-size:var(--fs-xs);background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;border-radius:4px;padding:4px 6px;font-family:inherit}.import-select:focus{border-color:var(--accent);outline:none}.import-more{font-size:var(--fs-xs);color:var(--text-muted);text-align:center;padding:4px 0}.import-warning{font-size:var(--fs-sm);color:var(--warning);border-radius:var(--radius-sm);background:#f59e0b1a;border:1px solid #f59e0b4d;align-items:center;gap:6px;padding:8px 12px;display:flex}.import-done{flex-direction:column;align-items:center;gap:12px;padding:24px 0;display:flex}.import-done-icon{background:var(--success);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:56px;height:56px;display:flex;box-shadow:0 0 20px #10b9814d}.import-drop-zone{border:2px dashed var(--border);border-radius:var(--radius-md);cursor:pointer;color:var(--text-muted);font-size:var(--fs-sm);transition:var(--transition);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex}.import-drop-zone:hover,.import-drop-zone.drag-over{border-color:var(--accent);color:var(--accent);background:var(--accent-bg-subtle)}.import-divider{color:var(--text-muted);font-size:var(--fs-xs);align-items:center;gap:12px;display:flex}.import-divider:before,.import-divider:after{content:"";background:var(--border);flex:1;height:1px}.gt-outer{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.gt-wrapper{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);flex:1;min-height:0;display:flex;overflow:hidden}.gt-left{border-right:2px solid var(--border);background:var(--bg-secondary);z-index:5;flex-direction:column;flex-shrink:0;display:flex}.gt-left-header{border-bottom:2px solid var(--border);background:var(--bg-secondary);z-index:3;box-sizing:border-box;display:flex;position:sticky;top:0}.gt-lh-cell{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);border-right:1px solid var(--border);flex-shrink:0;justify-content:center;align-items:center;padding:0 10px;font-weight:700;display:flex;position:relative}.gt-left-body{scrollbar-width:none;flex:1;overflow:hidden auto}.gt-left-body::-webkit-scrollbar{display:none}.gt-group-row{font-size:var(--fs-xs);letter-spacing:.3px;z-index:2;box-sizing:border-box;background:var(--border2);color:var(--text-muted);border-left:6px solid;align-items:center;gap:8px;padding:0 10px;font-weight:700;display:flex;position:sticky;top:0}.gt-group-chevron{opacity:.6;flex-shrink:0;align-items:center;display:flex}.gt-group-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden;color:var(--text-primary)!important}.gt-group-count{opacity:.6;color:var(--text-primary);background:var(--border);border-radius:8px;padding:1px 6px;font-size:12px;font-weight:700}.gt-row-left{border-bottom:1px solid var(--border);box-sizing:border-box;align-items:center;transition:background .1s;display:flex}.gt-row-left:hover{background:var(--bg-card-hover)}.gt-cell-activity{min-width:0;font-size:var(--fs-xs);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;border-right:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;padding:0 8px;font-weight:600;display:flex;overflow:hidden}.gt-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.gt-cell-resp{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;border-right:1px solid var(--border);flex-shrink:0;padding:0 6px;font-size:10px;font-weight:500;overflow:hidden}.gt-cell-status{flex-shrink:0;justify-content:center;align-items:center;padding:0 6px;display:flex}.gt-right,.cpv-right{flex-direction:column;flex:1;min-width:0;display:flex}.gt-right-header,.cpv-right-header{border-bottom:2px solid var(--border);flex-shrink:0;overflow:hidden}.cpv-right-header-sticky{z-index:10;background:var(--bg-secondary);border-bottom:2px solid var(--border);position:sticky;top:0}.gt-month-row,.cpv-month-row{display:flex}.gt-month-cell,.cpv-month-cell{text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);border-right:2px solid var(--border);border-bottom:2px solid var(--border);white-space:nowrap;flex-shrink:0;padding:4px 8px;font-size:10px;font-weight:800;overflow:hidden}.gt-month-current{border-bottom:2px solid var(--accent);font-weight:900}.gt-day-row,.cpv-day-row{display:flex}.gt-day-cell,.cpv-day-cell{border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:0;padding:2px 0;display:flex}.gt-day-dow{color:var(--text-muted);text-transform:uppercase;font-size:8px;font-weight:700;line-height:1}.gt-day-num{color:var(--text-secondary);font-size:10px;font-weight:700;line-height:1.2}.gt-day-today{background:var(--accent)!important}.gt-day-today .gt-day-num,.gt-day-today .gt-day-dow{font-weight:800;color:#fff!important}.gt-day-weekend{background:var(--weekend-bg)}.gt-day-weekend .gt-day-dow,.gt-day-weekend .gt-day-num{color:var(--weekend-text)}.gt-day-inactive{opacity:.35;background:#f43f5e14}.gt-right-body,.cpv-right-body{flex:1;overflow:auto}.gt-right-body::-webkit-scrollbar{height:12px}.gt-right-body::-webkit-scrollbar-track{background:var(--bg-card)}.gt-right-body::-webkit-scrollbar-thumb{background:var(--scrollbar-hover);border:2px solid var(--bg-card);border-radius:6px}.gt-right-body::-webkit-scrollbar-thumb:hover{background:var(--accent)}.gt-grid-group{box-sizing:border-box;background:var(--border2);display:flex}.gt-grid-group-cell{border-right:1px solid var(--border);background:var(--bg-card);border-bottom:none;flex-shrink:0}.gt-grid-row,.cpv-grid-row{border-bottom:1px solid var(--border);box-sizing:border-box;display:flex;position:relative}.gt-cell{border-right:1px solid var(--border);cursor:pointer;flex-shrink:0;transition:background .1s}.gt-cell:hover{background:var(--bg-card-hover)}.gt-today,.cpv-cell-today{box-shadow:inset 0 0 0 1px var(--accent-border);background:var(--accent-bg)!important}.gt-weekend,.cpv-cell-weekend{background:var(--weekend-bg)}.gt-inactive{opacity:.35;background:#f43f5e0f!important}.gt-over{background:var(--accent-bg-hover)!important}.gt-bar,.cpv-bar{z-index:3;cursor:grab;user-select:none;border-radius:4px;align-items:center;gap:4px;height:calc(100% - 6px);padding:0 6px;transition:opacity .15s;display:flex;position:absolute;top:3px;overflow:hidden}.gt-bar:hover,.cpv-bar:hover{z-index:5}.gt-bar-dragging{opacity:.3}.gt-bar-label,.cpv-bar-label{color:#fff;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 2px #0000004d;flex:1;font-size:9px;font-weight:700;overflow:hidden}.gt-bar-resize,.cpv-bar-resize{cursor:ew-resize;color:#ffffff80;opacity:0;flex-shrink:0;align-items:center;transition:opacity .15s;display:flex}.gt-bar:hover .gt-bar-resize,.cpv-bar:hover .cpv-bar-resize{opacity:1}.cpv-container{flex-direction:column;flex:1;gap:10px;min-height:0;padding:10px 15px;display:flex}.cpv-topbar{flex-wrap:wrap;align-items:center;gap:8px;padding:10px 10px 0 0;display:flex}.cpv-client-select{border:1px solid var(--border);background:var(--bg-primary);appearance:auto;border-radius:4px;width:auto;padding:2px 6px;font-weight:700}.cpv-back{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius-sm);font-size:var(--fs-sm);cursor:pointer;transition:var(--transition);align-items:center;gap:6px;padding:8px 14px;font-family:inherit;font-weight:600;display:flex}.cpv-back:hover{background:var(--bg-card-hover);color:var(--text-primary);border-color:var(--border-hover)}.cpv-info{flex:1;align-items:baseline;gap:10px;min-width:0;display:flex}.cpv-dot{border-radius:50%;flex-shrink:0;width:14px;height:14px}.cpv-title{font-size:var(--fs-lg);letter-spacing:-.3px;text-overflow:ellipsis;white-space:nowrap;font-weight:800;overflow:hidden}.cpv-client{font-size:var(--fs-client);color:var(--text-secondary);border-bottom:2px solid #0000;flex-shrink:0;padding:0 0 1px;font-weight:600}.cpv-client.empty{opacity:.5;border-bottom:none}.cpv-version{font-size:var(--fs-xs);color:var(--accent);cursor:pointer;background:var(--accent-bg);border:1px solid var(--accent-border);transition:var(--transition);border-radius:4px;flex-shrink:0;padding:2px 8px;font-weight:700}.cpv-version:hover{background:var(--accent-bg-hover)}.cpv-version-input{font-size:var(--fs-xs);background:var(--bg-card);border:1px solid var(--accent);width:60px;color:var(--text-primary);border-radius:4px;outline:none;padding:2px 8px;font-family:inherit;font-weight:700}.cpv-meta{flex-shrink:0;align-items:center;gap:8px;display:flex}.cpv-separator{background:var(--border);flex-shrink:0;width:1px;height:20px}.cpv-members{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.cpv-members-label{color:var(--text-muted);font-size:.75em;font-weight:600}.cpv-meta-stack{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.cpv-task-count{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600}.cpv-dates{font-size:var(--fs-xs);color:var(--text-muted);align-items:center;gap:4px;display:flex}.cpv-add-form{flex-shrink:0;align-items:center;gap:6px;display:flex}.cpv-input-title{min-width:0;font-size:var(--fs-sm);flex:1;padding:8px 12px}.cpv-input-resp{width:130px;font-size:var(--fs-sm);flex-shrink:0;padding:8px 10px}.cpv-input-date{width:140px;font-size:var(--fs-sm);flex-shrink:0;padding:8px 10px}.cpv-add-btn{padding:8px 14px}.cpv-empty{text-align:center;color:var(--text-muted);font-size:var(--fs-sm);flex:1;justify-content:center;align-items:center;padding:40px;display:flex}.cpv-gantt{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-primary);flex:1;min-height:0;display:flex;overflow:hidden}.cpv-left{border-right:2px solid var(--border);background:var(--bg-secondary);z-index:2;flex-direction:column;flex-shrink:0;display:flex}.cpv-left-header{border-bottom:2px solid var(--border);display:flex}.cpv-lh{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);border-right:1px solid var(--border);flex-shrink:0;place-content:center;align-items:center;padding:0 10px;font-weight:700;display:flex;position:relative}.cpv-left-body{scrollbar-width:none;flex:1;overflow-y:auto}.cpv-left-body::-webkit-scrollbar{display:none}.cpv-row-left{border-bottom:1px solid var(--border);box-sizing:border-box;align-items:center;transition:background .1s;display:flex;position:relative}.cpv-row-left:hover{background:var(--bg-card-hover)}.cpv-cell-act{min-width:0;font-size:var(--fs-xs);color:var(--text-primary);border-right:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;padding:0 8px;font-weight:600;display:flex;overflow:hidden}.cpv-task-del{color:var(--text-muted);cursor:pointer;opacity:0;transition:var(--transition);background:0 0;border:none;border-radius:50%;flex-shrink:0;padding:2px;display:flex}.cpv-row-left:hover .cpv-task-del{opacity:1}.cpv-task-del:hover{color:var(--danger);background:#f43f5e1a}.cpv-days-badge{color:var(--text-muted);background:var(--bg-card);border-radius:3px;flex-shrink:0;padding:0 5px;font-size:9px;font-weight:600}.cpv-cell-resp{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;border-right:1px solid var(--border);flex-shrink:0;padding:0 6px;font-size:11px;overflow:hidden}.cpv-cell-status{text-align:center;flex-shrink:0;padding:0 7px}.cpv-status-select{background:var(--bg-card);cursor:pointer;border:1px solid;border-radius:4px;outline:none;width:100%;padding:2px 4px;font-family:inherit;font-size:10px;font-weight:700}.cpv-day-dow{color:var(--text-muted);text-transform:uppercase;font-size:8px;font-weight:700;line-height:1}.cpv-day-num{color:var(--text-secondary);font-size:10px;font-weight:700;line-height:1.2}.cpv-day-today{background:var(--accent)!important}.cpv-day-today .cpv-day-num,.cpv-day-today .cpv-day-dow{font-weight:800;color:#fff!important}.cpv-import-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius-sm);font-size:var(--fs-xs);cursor:pointer;transition:var(--transition);align-items:center;gap:5px;padding:6px 12px;font-family:inherit;font-weight:600;display:flex}.cpv-import-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.cpv-icon-btn{background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius-sm);font-size:var(--fs-xs);cursor:pointer;transition:var(--transition);align-items:center;gap:5px;padding:6px 10px;font-family:inherit;font-weight:600;display:flex;position:relative}.cpv-icon-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.cpv-icon-btn:hover:after,.theme-btn[title]:hover:after,.notes-btn[title]:hover:after,.view-toggle-btn[title]:hover:after,.cpv-zoom-btn[title]:hover:after,.cpv-import-btn[title]:hover:after,.today-btn[title]:hover:after{content:attr(title);background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);z-index:100;pointer-events:none;white-space:nowrap;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:600;position:absolute;bottom:-26px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000026}.theme-btn[title],.notes-btn[title],.view-toggle-btn[title],.cpv-zoom-btn[title],.cpv-import-btn[title],.today-btn[title]{position:relative}.cpv-icon-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.cpv-col-badge{background:var(--accent);color:#fff;font-size:inherit;border-radius:10px;margin-left:6px;padding:1px 6px;font-weight:700;transform:scale(1.3)}.cpv-col-dates{font-size:inherit;color:var(--text-muted);text-transform:none;letter-spacing:0;justify-content:center;align-items:center;gap:3px;width:100%;margin-top:2px;font-weight:400;display:flex}.cpv-title-input{font-size:var(--fs-lg);background:var(--bg-card);border:1px solid var(--accent);color:var(--text-primary);border-radius:var(--radius-sm);min-width:400px;box-shadow:0 0 0 3px var(--accent-glow);outline:none;flex:1;padding:4px 10px;font-family:inherit;font-weight:800}.cpv-inline-input{background:var(--bg-card);border:1px solid var(--accent);width:100%;min-width:0;color:var(--text-primary);font-size:inherit;font-family:inherit;font-weight:inherit;box-shadow:0 0 0 2px var(--accent-glow);border-radius:3px;outline:none;padding:1px 4px}.cpv-cell-text{text-overflow:ellipsis;white-space:nowrap;cursor:default;flex:1;min-width:0;padding-left:20px;overflow:hidden}.cpv-cell-act .cpv-cell-text:hover,.cpv-cell-resp .cpv-cell-text:hover{color:var(--accent);cursor:text}.import-sheet-picker{font-size:var(--fs-xs);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.import-sheet-btn{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);color:var(--text-secondary);font-size:var(--fs-xs);cursor:pointer;transition:var(--transition);padding:4px 10px;font-family:inherit;font-weight:600}.import-sheet-btn:hover{border-color:var(--accent);color:var(--accent)}.import-sheet-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.cpv-row-expanded{min-height:auto}.cpv-row-expanded .cpv-cell-act,.cpv-row-expanded .cpv-cell-resp{white-space:normal;word-break:break-word;align-items:flex-start;padding-top:6px;padding-bottom:6px;line-height:1.4}.cpv-row-expanded .cpv-cell-text{white-space:normal;overflow:visible}.cpv-row-expanded .cpv-cell-status{align-items:flex-start}.cpv-import-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.cpv-col-resize{cursor:col-resize;z-index:5;background:0 0;width:5px;transition:background .15s;position:absolute;top:0;bottom:0;right:-2px}.cpv-col-resize:hover{background:var(--accent)}.cpv-grid-cell{border-right:1px solid var(--border);cursor:pointer;flex-shrink:0;transition:background .1s;position:relative}.cpv-grid-cell:hover{background:var(--accent-bg)!important}.cpv-grid-cell:hover:after{content:"";background:var(--accent-bg);pointer-events:none;z-index:0;position:absolute;inset:-5000px 0}.cpv-grid-row:hover{background:var(--accent-bg)}.cpv-cell-picking{cursor:crosshair;background:var(--accent-bg-subtle)!important}.cpv-cell-picking:hover{background:var(--accent-bg-hover)!important}.cpv-pick-hint{color:var(--accent);background:var(--accent-glow);white-space:nowrap;border-radius:3px;flex-shrink:0;padding:1px 5px;font-size:8px;font-weight:700;animation:1s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.cpv-cell-picked{background:var(--accent)!important}.badge-to-complex{background:var(--bg-card);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:var(--transition);opacity:0;z-index:3;border-radius:4px;padding:3px;line-height:1;display:flex;position:absolute;bottom:4px;right:26px}.badge:hover .badge-to-complex{opacity:.6}.badge-to-complex:hover{color:#8b5cf6;background:#8b5cf61a;border-color:#8b5cf6;opacity:1!important}.cpv-color-wrap{flex-shrink:0;align-items:center;display:flex;position:relative}.cpv-color-dot{cursor:pointer;border:2px solid #ffffff26;border-radius:50%;flex-shrink:0;width:14px;min-width:14px;height:14px;min-height:14px;transition:transform .15s;box-shadow:0 0 0 1px #0000004d}.cpv-color-dot:hover{transform:scale(1.3)}.cpv-color-picker{z-index:999;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);width:170px;box-shadow:var(--shadow-lg);flex-wrap:wrap;gap:4px;padding:8px;display:flex;position:fixed}.cpv-color-opt{cursor:pointer;border:2px solid #0000;border-radius:50%;width:24px;height:24px;padding:0;transition:transform .15s}.cpv-color-opt:hover{border-color:#fff;transform:scale(1.2)}.cpv-color-none{background:var(--bg-card);border:1.5px dashed var(--text-muted);color:var(--text-muted);justify-content:center;align-items:center;font-size:10px;display:flex}.cpv-zoom{align-items:center;gap:4px;display:flex}.cpv-zoom-btn{border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);width:26px;height:26px;color:var(--text-secondary);cursor:pointer;transition:var(--transition);justify-content:center;align-items:center;display:flex}.cpv-zoom-btn:hover:not(:disabled){background:var(--bg-card-hover);color:var(--text-primary)}.cpv-zoom-btn.active{background:var(--accent);color:#fff}.cpv-zoom-btn:disabled{opacity:.3;cursor:default}.cpv-zoom-label{color:var(--text-muted);text-align:center;width:20px;font-size:10px;font-weight:700}.cpv-container[data-cpv-zoom="0"] .cpv-cell-act{font-size:10px}.cpv-container[data-cpv-zoom="0"] .cpv-cell-resp{font-size:9px}.cpv-container[data-cpv-zoom="0"] .cpv-status-select{font-size:8px}.cpv-container[data-cpv-zoom="0"] .cpv-day-dow{font-size:6px}.cpv-container[data-cpv-zoom="0"] .cpv-day-num{font-size:8px}.cpv-container[data-cpv-zoom="0"] .cpv-bar-label{font-size:7px}.cpv-container[data-cpv-zoom="0"] .cpv-month-cell{padding:2px 4px;font-size:8px}.cpv-container[data-cpv-zoom="0"] .cpv-color-dot{width:7px;height:7px}.cpv-container[data-cpv-zoom="0"] .cpv-days-badge{font-size:7px}.cpv-container[data-cpv-zoom="1"] .cpv-cell-act{font-size:11px}.cpv-container[data-cpv-zoom="1"] .cpv-cell-resp{font-size:10px}.cpv-container[data-cpv-zoom="1"] .cpv-status-select{font-size:9px}.cpv-container[data-cpv-zoom="1"] .cpv-day-dow{font-size:7px}.cpv-container[data-cpv-zoom="1"] .cpv-day-num{font-size:9px}.cpv-container[data-cpv-zoom="1"] .cpv-bar-label{font-size:8px}.cpv-container[data-cpv-zoom="1"] .cpv-month-cell{font-size:9px}.cpv-container[data-cpv-zoom="1"] .cpv-color-dot{width:9px;height:9px}.cpv-container[data-cpv-zoom="2"] .cpv-cell-act{font-size:13px}.cpv-container[data-cpv-zoom="2"] .cpv-cell-resp{font-size:12px}.cpv-container[data-cpv-zoom="2"] .cpv-status-select{font-size:11px}.cpv-container[data-cpv-zoom="2"] .cpv-day-dow{font-size:9px}.cpv-container[data-cpv-zoom="2"] .cpv-day-num{font-size:11px}.cpv-container[data-cpv-zoom="2"] .cpv-bar-label{font-size:10px}.cpv-container[data-cpv-zoom="2"] .cpv-month-cell{padding:5px 10px;font-size:11px}.cpv-container[data-cpv-zoom="2"] .cpv-color-dot{width:12px;height:12px}.cpv-container[data-cpv-zoom="2"] .cpv-days-badge{font-size:10px}.cpv-container[data-cpv-zoom="2"] .cpv-lh{font-size:12px}.cpv-container[data-cpv-zoom="3"] .cpv-cell-act{font-size:15px}.cpv-container[data-cpv-zoom="3"] .cpv-cell-resp{font-size:14px}.cpv-container[data-cpv-zoom="3"] .cpv-status-select{font-size:13px}.cpv-container[data-cpv-zoom="3"] .cpv-day-dow{font-size:10px}.cpv-container[data-cpv-zoom="3"] .cpv-day-num{font-size:13px}.cpv-container[data-cpv-zoom="3"] .cpv-bar-label{font-size:12px}.cpv-container[data-cpv-zoom="3"] .cpv-month-cell{padding:6px 12px;font-size:13px}.cpv-container[data-cpv-zoom="3"] .cpv-color-dot{width:14px;height:14px}.cpv-container[data-cpv-zoom="3"] .cpv-days-badge{font-size:11px}.cpv-container[data-cpv-zoom="3"] .cpv-lh{font-size:13px}.cpv-train-row{border-bottom:2px solid var(--accent);background:var(--bg-card);box-sizing:border-box;display:flex}.cpv-train-cell{border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:0;display:flex}.cpv-train-block{min-height:4px}.cpv-train-label{text-transform:uppercase;letter-spacing:.8px;color:var(--accent);border-bottom:2px solid var(--accent);background:var(--bg-card);box-sizing:border-box;align-items:center;padding:0 10px;font-size:10px;font-weight:700;display:flex}.cpv-drag-handle{cursor:grab;color:var(--text-muted);opacity:.4;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;min-width:20px;min-height:20px;padding:4px;transition:background .15s,opacity .15s;display:flex}.cpv-row-left:hover .cpv-drag-handle{opacity:.8;background:var(--bg-card)}.cpv-drag-handle:hover{color:var(--accent);opacity:1!important;background:var(--accent-glow)!important}.cpv-container[data-cpv-zoom="4"] .cpv-cell-act{font-size:17px}.cpv-container[data-cpv-zoom="4"] .cpv-cell-resp{font-size:16px}.cpv-container[data-cpv-zoom="4"] .cpv-status-select{font-size:15px}.cpv-container[data-cpv-zoom="4"] .cpv-day-dow{font-size:12px}.cpv-container[data-cpv-zoom="4"] .cpv-day-num{font-size:15px}.cpv-container[data-cpv-zoom="4"] .cpv-bar-label{font-size:14px}.cpv-container[data-cpv-zoom="4"] .cpv-month-cell{padding:8px 14px;font-size:15px}.cpv-container[data-cpv-zoom="4"] .cpv-color-dot{width:16px;min-width:16px;height:16px;min-height:16px}.cpv-container[data-cpv-zoom="4"] .cpv-days-badge{font-size:13px}.cpv-container[data-cpv-zoom="4"] .cpv-lh{font-size:14px}.gt-outer[data-gt-zoom="0"] .gt-cell-activity{font-size:10px}.gt-outer[data-gt-zoom="0"] .gt-cell-resp{font-size:9px}.gt-outer[data-gt-zoom="0"] .gt-status-badge{font-size:7px}.gt-outer[data-gt-zoom="0"] .gt-day-dow{font-size:6px}.gt-outer[data-gt-zoom="0"] .gt-day-num{font-size:8px}.gt-outer[data-gt-zoom="0"] .gt-bar-label{font-size:7px}.gt-outer[data-gt-zoom="0"] .gt-month-cell{padding:2px 4px;font-size:8px}.gt-outer[data-gt-zoom="0"] .gt-lh-cell,.gt-outer[data-gt-zoom="0"] .gt-group-row{font-size:9px}.gt-outer[data-gt-zoom="1"] .gt-cell-activity{font-size:11px}.gt-outer[data-gt-zoom="1"] .gt-cell-resp{font-size:10px}.gt-outer[data-gt-zoom="1"] .gt-status-badge{font-size:8px}.gt-outer[data-gt-zoom="1"] .gt-day-dow{font-size:7px}.gt-outer[data-gt-zoom="1"] .gt-day-num{font-size:9px}.gt-outer[data-gt-zoom="1"] .gt-bar-label{font-size:8px}.gt-outer[data-gt-zoom="1"] .gt-month-cell{font-size:9px}.gt-outer[data-gt-zoom="1"] .gt-lh-cell,.gt-outer[data-gt-zoom="1"] .gt-group-row{font-size:10px}.gt-outer[data-gt-zoom="2"] .gt-cell-activity{font-size:13px}.gt-outer[data-gt-zoom="2"] .gt-cell-resp{font-size:12px}.gt-outer[data-gt-zoom="2"] .gt-status-badge{font-size:10px}.gt-outer[data-gt-zoom="2"] .gt-day-dow{font-size:9px}.gt-outer[data-gt-zoom="2"] .gt-day-num{font-size:11px}.gt-outer[data-gt-zoom="2"] .gt-bar-label{font-size:10px}.gt-outer[data-gt-zoom="2"] .gt-month-cell{padding:5px 10px;font-size:11px}.gt-outer[data-gt-zoom="2"] .gt-lh-cell,.gt-outer[data-gt-zoom="2"] .gt-group-row{font-size:12px}.gt-outer[data-gt-zoom="3"] .gt-cell-activity{font-size:15px}.gt-outer[data-gt-zoom="3"] .gt-cell-resp{font-size:14px}.gt-outer[data-gt-zoom="3"] .gt-status-badge{font-size:12px}.gt-outer[data-gt-zoom="3"] .gt-day-dow{font-size:10px}.gt-outer[data-gt-zoom="3"] .gt-day-num{font-size:13px}.gt-outer[data-gt-zoom="3"] .gt-bar-label{font-size:12px}.gt-outer[data-gt-zoom="3"] .gt-month-cell{padding:6px 12px;font-size:13px}.gt-outer[data-gt-zoom="3"] .gt-lh-cell,.gt-outer[data-gt-zoom="3"] .gt-group-row{font-size:13px}.gt-outer[data-gt-zoom="4"] .gt-cell-activity{font-size:17px}.gt-outer[data-gt-zoom="4"] .gt-cell-resp{font-size:16px}.gt-outer[data-gt-zoom="4"] .gt-status-badge{font-size:14px}.gt-outer[data-gt-zoom="4"] .gt-day-dow{font-size:12px}.gt-outer[data-gt-zoom="4"] .gt-day-num{font-size:15px}.gt-outer[data-gt-zoom="4"] .gt-bar-label{font-size:14px}.gt-outer[data-gt-zoom="4"] .gt-month-cell{padding:8px 14px;font-size:15px}.gt-outer[data-gt-zoom="4"] .gt-lh-cell,.gt-outer[data-gt-zoom="4"] .gt-group-row{font-size:14px}.cpv-day-inactive{opacity:.5;color:#ef4444;background:#f43f5e1f}.cpv-cell-inactive{background:#f43f5e14!important}.cpv-day-weekend{background:#f43f5e14}.cpv-day-weekend .cpv-day-dow,.cpv-day-weekend .cpv-day-num{color:var(--danger)}.cpv-cell-weekend{background:#f43f5e0d}.gt-cell-resp{cursor:pointer}.gt-cell-resp:hover{background:var(--bg-card-hover)}.gt-row-left:hover .gt-designer-empty{opacity:1}.gt-designer-picker{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);flex-direction:column;gap:2px;min-width:140px;padding:6px;display:flex}.gt-designer-opt{color:var(--text-secondary);cursor:pointer;text-align:left;transition:var(--transition);background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;padding:4px 8px;font-family:inherit;font-size:11px;display:flex}.gt-designer-opt:hover{background:var(--bg-card);color:var(--text-primary)}.gt-row-expanded .gt-cell-activity,.gt-row-expanded .gt-cell-resp{white-space:normal;word-break:break-word;align-items:flex-start;padding-top:6px;padding-bottom:6px;line-height:1.4}.gt-row-expanded .gt-cell-activity{overflow:visible}.gt-row-expanded .gt-cell-status{align-items:flex-start;padding-top:6px}.badge-dates-label{font-size:var(--fs-days);color:var(--text-secondary);white-space:nowrap;font-weight:500}.cpv-shift-group{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:2px;padding:2px;display:flex}.cpv-shift-btn{color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:4px;align-items:center;gap:1px;padding:4px 6px;font-family:inherit;font-size:10px;font-weight:700;display:flex}.cpv-shift-btn:hover{background:var(--accent);color:#fff}.cpv-shift-mode,.cpv-shift-mode *{cursor:grab!important}.cpv-shift-mode .cpv-grid-cell:hover{background:var(--accent-bg)!important}.cpv-col-toggle{color:var(--text-muted);cursor:pointer;user-select:none;border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);transition:var(--transition);align-items:center;gap:4px;padding:4px 8px;font-size:11px;font-weight:600;display:flex}.cpv-col-toggle:hover{color:var(--text-primary);border-color:var(--border-hover)}.cpv-col-toggle input{accent-color:var(--accent);cursor:pointer}.cpv-col-act{width:var(--col-act)}.cpv-lh.cpv-col-act{flex-wrap:wrap;padding:4px 10px}.cpv-col-resp{width:var(--col-resp)}.cpv-col-status{width:var(--col-status)}.cpv-col-notes{width:var(--col-notes)}.cpv-cell-notes{border-left:1px solid var(--border);align-items:stretch;padding:0;display:flex}.cpv-notes-input{width:100%;height:100%;font-size:var(--fs-xs);color:var(--text-secondary);resize:none;background:0 0;border:none;outline:none;padding:5px;font-family:inherit;line-height:1.3;overflow-y:auto}.badge-to-complex.is-complex{color:#a78bfa;opacity:0;background:#8b5cf626;border-color:#a78bfa}.badge:hover .badge-to-complex.is-complex{opacity:.8}.badge-to-complex.is-complex:hover{color:var(--danger);border-color:var(--danger);background:#f43f5e1a;opacity:1!important}.today-view{flex-direction:column;gap:12px;min-height:0;padding-bottom:8px;display:flex;overflow-y:auto}.today-header{border-bottom:2px solid var(--border);justify-content:space-between;align-items:baseline;padding-bottom:12px;display:flex}.today-date{align-items:baseline;gap:10px;display:flex}.today-title{color:var(--text-primary);margin:0;font-size:1.1em;font-weight:700}.today-dow{font-size:var(--fs-lg);color:var(--accent);letter-spacing:-.5px;font-weight:800}.today-full{font-size:var(--fs-md);color:var(--text-secondary);font-weight:600}.today-count{font-size:var(--fs-sm);color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:4px 12px;font-weight:600}.today-empty{text-align:center;color:var(--text-muted);font-size:var(--fs-lg);padding:60px 20px}.today-list{flex-direction:column;gap:8px;display:flex}.today-project{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg-card);transition:var(--transition);overflow:hidden}.today-project:hover{border-color:var(--border-hover)}.today-project-header{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;transition:background .15s;display:flex}.today-project-header:hover{background:var(--bg-card-hover)}.today-project-left{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.today-expand{color:var(--text-muted);flex-shrink:0;display:flex}.today-project-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.today-project-title{font-size:var(--fs-md);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.today-project-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.today-remaining{color:var(--text-muted);white-space:nowrap;font-size:11px;font-weight:600}.today-tasks{border-top:1px solid var(--border);background:var(--bg-secondary);flex-direction:column;gap:6px;padding:8px 16px 12px;display:flex}.today-tasks-header{color:var(--accent);padding-bottom:4px;font-size:11px;font-weight:600}.today-tasks-empty{color:var(--text-muted);padding:8px 0;font-size:12px}.today-task{border-radius:var(--radius-sm);align-items:center;gap:8px;padding:6px 8px;transition:background .1s;display:flex}.today-task:hover{background:var(--bg-card-hover)}.today-task-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.today-task-title{font-size:var(--fs-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;overflow:hidden}.today-task-resp{color:var(--text-muted);white-space:nowrap;font-size:.85em}.today-task-resp-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.today-task-status{white-space:nowrap;background:color-mix(in srgb, currentColor 15%, transparent);border-radius:10px;align-items:center;gap:3px;padding:2px 6px;font-size:11px;font-weight:700;display:flex}.today-task-dates{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap}.today-open-btn{border:1px solid var(--accent);color:var(--accent);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);background:0 0;align-self:flex-end;margin-top:4px;padding:4px 12px;font-family:inherit;font-size:11px;font-weight:600}.today-open-btn:hover{background:var(--accent);color:#fff}.gt-col-act{width:var(--col-act)}.gt-col-resp{width:var(--col-resp)}.gt-col-status{width:var(--col-status)}.cpv-templates-panel{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;gap:8px;padding:10px;animation:.15s slideDown;display:flex}.cpv-tpl-list{flex-wrap:wrap;gap:6px;display:flex}.cpv-tpl-item{border-radius:var(--radius-sm);background:var(--bg-card-hover);border:1px solid var(--border);transition:var(--transition);align-items:center;gap:6px;padding:4px 8px;font-size:12px;display:flex}.cpv-tpl-item:hover{border-color:var(--border-hover)}.cpv-tpl-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.cpv-tpl-name{color:var(--text-primary);white-space:nowrap;font-weight:600}.cpv-tpl-add{color:var(--accent);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:3px;padding:2px 6px;font-family:inherit;font-size:10px;font-weight:700}.cpv-tpl-add:hover{background:var(--accent);color:#fff}.cpv-tpl-del{color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;padding:2px;display:flex}.cpv-tpl-del:hover{color:var(--danger)}.cpv-tpl-empty{color:var(--text-muted);font-size:11px}.cpv-tpl-form{align-items:center;gap:6px;display:flex}.cpv-tpl-input{flex:1;padding:6px 10px;font-size:12px}.cpv-tpl-color{border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:var(--bg-card);width:32px;height:32px;padding:2px}.shared-color-picker{flex-wrap:wrap;gap:4px;padding:6px;display:flex}.shared-color-opt{cursor:pointer;border:2px solid #0000;border-radius:50%;padding:0;transition:transform .12s}.shared-color-opt:hover{border-color:#ffffff80;transform:scale(1.2)}.shared-color-opt.active{border-color:#fff;transform:scale(1.15);box-shadow:0 0 6px #fff6}.shared-color-add{border:1.5px dashed var(--text-muted);cursor:pointer;color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:flex;position:relative;overflow:hidden}.shared-color-add input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.shared-color-add:hover{border-color:var(--accent);color:var(--accent)}.shared-color-none{color:var(--text-muted);justify-content:center;align-items:center;font-size:9px;display:flex;background:var(--bg-card)!important;border:1.5px dashed var(--text-muted)!important}.cpv-tpl-color-btn{cursor:pointer;border:2px solid #fff3;border-radius:50%;flex-shrink:0;width:32px;height:32px;transition:transform .15s}.cpv-tpl-color-btn:hover{border-color:#ffffff80;transform:scale(1.1)}.cpv-tpl-bar{flex-wrap:wrap;flex-shrink:0;gap:6px;display:flex}.cpv-tpl-pill{cursor:grab;background:var(--bg-card);transition:var(--transition);border:1.5px solid;border-radius:20px;align-items:center;gap:6px;padding:5px 10px;font-size:12px;display:flex}.cpv-tpl-pill:hover{background:var(--bg-card-hover)}.cpv-tpl-pill-new{cursor:pointer;border-style:dashed;border-color:#6b7280}.cpv-tpl-separator{background:var(--border);width:1px;height:18px;margin:0 4px}.cpv-tpl-pill-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.cpv-tpl-pill-name{color:var(--text-primary);white-space:nowrap;font-weight:600}.cpv-tpl-pill-add{color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;padding:0;font-family:inherit;font-size:10px;font-weight:700}.cpv-tpl-pill-add:hover{color:var(--accent)}.cpv-tpl-add-btn{background:var(--bg-card);border:1.5px dashed var(--border);width:28px;height:28px;color:var(--text-muted);cursor:pointer;transition:var(--transition);border-radius:50%;justify-content:center;align-items:center;display:flex}.cpv-tpl-add-btn:hover{color:var(--accent);border-color:var(--accent)}.cpv-tpl-list-modal{flex-wrap:wrap;gap:6px;max-height:200px;display:flex;overflow-y:auto}.cpv-right-body,.gt-right-body,.tl-scroll,.cpv-left-body,.gt-left-body{will-change:scroll-position;-webkit-overflow-scrolling:touch}.cpv-grid-row,.gt-grid-row{contain:layout style}.gt-cell{contain:strict}.cpv-grid-cell{contain:layout style}.cpv-bar,.gt-bar{will-change:transform, width;contain:layout style}.cpv-row-left,.gt-row-left{contain:layout style}.badge,.calendar-grid{contain:style}.bl-lane{border-bottom:2px solid var(--accent);background:var(--bg-card)}.bl-creating{cursor:crosshair!important;background:var(--accent-bg-subtle)!important}.bl-bar{cursor:grab;user-select:none;border-radius:4px;align-items:center;gap:2px;padding:0 5px;display:flex;overflow:hidden}.bl-bar:hover{filter:brightness(1.1)}.bl-del{color:#ffffff80;cursor:pointer;opacity:0;background:0 0;border:none;flex-shrink:0;padding:2px;font-size:10px;transition:opacity .1s;display:flex}.bl-bar:hover .bl-del{opacity:1}.bl-del:hover{color:#fff}.bl-resize{color:#ffffff80;cursor:ew-resize;opacity:0;flex-shrink:0;align-items:center;transition:opacity .1s;display:flex}.bl-bar:hover .bl-resize{opacity:1}.bl-title-input{color:#fff;background:#0003;border:none;border-radius:2px;outline:none;width:100%;min-width:30px;padding:1px 4px;font-family:inherit;font-size:10px;font-weight:700}.bl-hint{color:var(--accent);font-size:9px;font-weight:600;animation:1s infinite pulse;position:absolute;bottom:2px;left:8px}.bl-color-picker{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);padding:4px}.cpv-grid-cell-bg{transition:none}.cpv-blocks-spacer{border-bottom:2px solid var(--accent);background:var(--bg-card);box-sizing:border-box;flex-shrink:0;align-items:flex-end;padding:0 10px 4px;display:flex}.cpv-blocks-label{text-transform:uppercase;letter-spacing:.8px;color:var(--accent);opacity:.7;font-size:9px;font-weight:700}.today-blocks-row{flex-wrap:wrap;gap:6px;padding:4px 0;display:flex}.today-block{color:#fff;white-space:nowrap;text-shadow:0 1px 2px #0003;border-radius:6px;padding:4px 12px;font-size:11px;font-weight:700}.bl-highlight{background:var(--accent-bg-hover)!important}.bl-name-bar{background:var(--accent);box-shadow:0 0 0 2px var(--accent-glow);border-radius:4px;align-items:center;padding:0 2px;display:flex}.bl-name-input{color:#fff;background:0 0;border:none;outline:none;width:100%;padding:2px 4px;font-family:inherit;font-size:10px;font-weight:700}.bl-tpl-row{z-index:6;align-items:center;gap:4px;display:flex;position:absolute;bottom:3px;left:4px}.bl-tpl-pill{background:var(--bg-card);color:var(--text-secondary);cursor:pointer;transition:var(--transition);white-space:nowrap;border:1.5px solid;border-radius:12px;align-items:center;gap:4px;padding:2px 8px;font-family:inherit;font-size:9px;font-weight:600;display:flex}.bl-tpl-pill:hover{background:var(--bg-card-hover);color:var(--text-primary)}.bl-tpl-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.cpv-modal-form{flex-direction:column;gap:12px;display:flex}.cpv-modal-row{gap:12px;display:flex}.cpv-modal-field{flex-direction:column;flex:1;gap:4px;display:flex}.cpv-modal-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:600}.cpv-modal-color-row{align-items:center;gap:8px;display:flex}.cpv-modal-color-dot{cursor:pointer;border:2px solid #fff3;border-radius:50%;width:28px;height:28px;transition:transform .15s}.cpv-modal-color-dot:hover{transform:scale(1.1)}.cpv-modal-color-clear{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:12px;transition:color .15s}.cpv-modal-color-clear:hover{color:var(--danger)}.pp-container{flex-direction:column;flex:1;gap:16px;min-height:0;padding:0 4px 16px;display:flex;overflow-y:auto}.pp-summary{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 20px}.pp-summary-title{font-size:var(--fs-sm);color:var(--text-primary);margin-bottom:12px;font-weight:700}.pp-stats{flex-wrap:wrap;gap:8px;display:flex}.pp-stat{border-radius:var(--radius-sm);background:var(--bg-secondary);border:1px solid var(--border);flex-direction:column;flex:1;align-items:center;gap:2px;min-width:100px;padding:10px 8px;display:flex}.pp-stat-icon{opacity:.8}.pp-stat-value{font-size:var(--fs-xl);color:var(--text-primary);font-weight:800;line-height:1.1}.pp-stat-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.5px;text-align:center;font-weight:600}.pp-pipeline{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px 20px}.pp-pipeline-title{font-size:var(--fs-sm);color:var(--text-primary);font-weight:700}.pp-pipeline-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.pp-header-controls{align-items:center;gap:10px;display:flex}.pp-sort-toggle{color:var(--text-muted);align-items:center;gap:4px;display:flex}.pp-sort-select{font-size:var(--fs-xs);background:var(--bg-secondary);color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);padding:4px 8px;font-family:inherit;font-weight:600}.pp-sort-select:hover{border-color:var(--accent);color:var(--text-primary)}.pp-filter-toggle{border-radius:var(--radius-sm);border:1px solid var(--border);display:flex;overflow:hidden}.pp-filter-btn{font-size:var(--fs-xs);background:var(--bg-secondary);color:var(--text-muted);cursor:pointer;transition:var(--transition);border:none;padding:4px 12px;font-family:inherit;font-weight:600}.pp-filter-btn:not(:last-child){border-right:1px solid var(--border)}.pp-filter-btn.active{background:var(--accent);color:#fff}.pp-filter-btn:hover:not(.active){color:var(--text-primary)}.pp-filter-standalone{border-radius:var(--radius-sm);border:1px solid var(--border);align-items:center;gap:4px;display:flex}.pp-rows{flex-direction:column;gap:12px;display:flex}.pp-row{border-radius:var(--radius-sm);background:var(--bg-secondary);border:1px solid var(--border);transition:var(--transition);align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.pp-row-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;margin-top:5px}.pp-row-body{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.pp-row-header{justify-content:space-between;align-items:center;display:flex}.pp-row-title-area{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.pp-row-chevron{color:var(--text-muted);transition:var(--transition);flex-shrink:0;display:flex}.pp-row-collapsed{padding:10px 16px}.pp-row-collapsed .pp-row-body{gap:0}.pp-row-title{font-size:var(--fs-sm);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.pp-row-title.complex{cursor:pointer}.pp-row-title.complex:hover{color:var(--accent)}.pp-row-client{color:var(--text-muted);font-weight:500}.pp-row-url{color:var(--text-muted);font-size:var(--fs-xs);flex-shrink:0;align-items:center;gap:4px;text-decoration:none;transition:color .15s;display:flex}.pp-row-url:hover{color:var(--accent)}.pp-row-url-text{font-size:var(--fs-xs);opacity:.7}.pp-row-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.pp-row-risk{font-size:var(--fs-xs);align-items:center;gap:4px;font-weight:700;display:flex}.pp-phases{border:none;border-radius:10px;align-items:stretch;display:flex;overflow:hidden}.pp-phase{font-size:var(--fs-xs);color:#ffffffe6;letter-spacing:.3px;border-radius:0;flex:1;justify-content:center;align-items:center;min-height:65px;padding:0 12px;font-weight:400;transition:all .2s;display:flex;position:relative}.pp-phase.future{background:var(--bg-card);color:var(--text-muted);opacity:.7}.pp-phase.cancelled{background:var(--bg-card);color:var(--text-muted);opacity:.3}.pp-phase.done{opacity:.85}.pp-phase.active{outline:2.5px solid var(--accent);outline-offset:-2px;box-shadow:0 0 12px var(--accent-glow);z-index:1;background:var(--accent-bg)!important;color:var(--accent)!important}.pp-phase-label{z-index:1;white-space:nowrap;text-align:center;padding:0 4px;position:relative}.pp-phase-simple-col{flex-direction:column;flex:1;align-items:center;gap:2px;min-width:0;max-width:140px;display:flex}.pp-phase-date-below{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;text-align:center;padding:0 15px;font-weight:500}.pp-phases-simple-wrap{flex-wrap:wrap;gap:15px 0;margin-top:20px;margin-bottom:20px;display:flex}.pp-phase-col-simple{flex-direction:column;flex:auto;align-items:center;gap:0;min-width:0;display:flex}.pp-phase-col-simple .pp-phase{border-radius:0;width:100%;min-height:65px}.pp-phase-col-simple:first-child .pp-phase{border-radius:10px 0 0 10px}.pp-phase-col-simple:last-child .pp-phase{border-radius:0 10px 10px 0}.pp-phase-col-simple:only-child .pp-phase{border-radius:10px}.pp-phases-simple-dates{display:flex}.pp-phases-simple-dates .pp-phase-date-below{text-align:center;flex:1;max-width:140px}.pp-row-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.pp-row-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.pp-row-actions{align-items:center;gap:8px;display:flex}.pp-row-log-btn{background:var(--bg-card);border:1px solid var(--border);width:28px;height:28px;color:var(--text-muted);cursor:pointer;transition:var(--transition);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.pp-row-log-btn:hover{border-color:var(--accent);color:var(--accent)}.pp-row-status-btn{font-size:var(--fs-xs);color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);background:var(--bg-card);border:1px solid var(--border);transition:var(--transition);align-items:center;gap:4px;padding:3px 10px;font-family:inherit;font-weight:600;display:flex}.pp-row-status-btn:hover{border-color:var(--accent)}.pp-row-status-select{font-size:var(--fs-xs);color:#fff;cursor:pointer;text-align:center;border:none;border-radius:20px;outline:none;padding:3px 10px;font-family:inherit;font-weight:600}.pp-status-picker{z-index:999;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);flex-direction:column;gap:2px;min-width:140px;margin-bottom:4px;padding:6px;display:flex;position:absolute;bottom:100%;right:0}.pp-status-opt{color:var(--text-secondary);font-size:var(--fs-select);cursor:pointer;text-align:left;transition:var(--transition);background:0 0;border:none;border-radius:4px;align-items:center;gap:6px;width:100%;padding:3px 6px;font-family:inherit;display:flex}.pp-status-opt:hover{background:var(--bg-card);color:var(--text-primary)}.pp-status-opt.active{color:var(--accent);font-weight:600}.pp-risk-overdue{border-left:3px solid #ef4444}.pp-risk-at-risk{border-left:3px solid #f59e0b}.pp-risk-on-track{border-left:3px solid #10b981}.pp-risk-done{background:#10b9810d;border-left:3px solid #10b981}.pp-empty{text-align:center;color:var(--text-muted);font-size:var(--fs-sm);padding:32px}.pp-complex-bar-wrap{flex-direction:column;align-items:flex-start;gap:10px;margin-top:20px;display:flex}.pp-complex-bar-col{flex-direction:column;flex:1;gap:4px;display:flex}.pp-complex-bar-col .pp-phases{width:100%}.pp-complex-progress{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;flex-shrink:0;margin-top:4px;font-weight:700}.pp-phase-overdue{animation:2s infinite pulse-overdue;color:var(--text-primary)!important}.pp-phase-late{opacity:.85}@keyframes pulse-overdue{0%,to{opacity:1}50%{opacity:.7}}.pp-overdue-alert{font-size:var(--fs-xs);color:#ef4444;text-overflow:ellipsis;white-space:nowrap;flex-direction:column;gap:2px;font-weight:600;display:flex;overflow:hidden}.pp-overdue-alert span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pp-delay-notes{flex-direction:column;gap:8px;margin:8px 0;display:flex}.pp-time-toggles{gap:6px;display:flex}.pp-time-toggle{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border-radius:4px;align-self:flex-start;align-items:center;gap:4px;padding:2px 8px;font-size:.7em;display:inline-flex}.pp-time-toggle:hover{color:var(--text-primary);border-color:var(--accent)}.pp-time-toggle.active{color:var(--accent);border-color:var(--accent)}.pp-delay-item{font-size:var(--fs-xs);align-items:center;gap:6px;display:flex}.pp-delay-branch{color:var(--text-muted);font-family:monospace;font-size:var(--fs-xs);flex-shrink:0}.pp-delay-badge{white-space:nowrap;flex-shrink:0;align-items:center;gap:5px;font-weight:600;display:flex}.pp-delay-badge.overdue{color:#ef4444}.pp-delay-badge.late{color:#f59e0b}.pp-delay-badge.ontime{color:#10b981}.pp-delay-date{opacity:.7;font-weight:400}.pp-delay-note{color:var(--text-primary);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;font-style:normal;font-size:var(--fs-xs);overflow:hidden}.pp-delay-input{min-width:120px;font-size:var(--fs-xs);background:var(--bg-card);border:1px solid var(--accent);color:var(--text-primary);border-radius:4px;flex:1;padding:2px 6px;font-family:inherit;font-style:italic}.pp-add-note-btn{color:#10b981;transition:var(--transition);cursor:pointer;justify-content:center;align-items:center;font-size:1.1em;font-style:normal;font-weight:700;line-height:1;display:inline-flex}.pp-add-note-btn:hover{background:#10b9814d}.pp-delay-user-note{color:var(--text-primary);cursor:pointer;font-style:italic;font-weight:400}.pp-delay-user-note:hover{opacity:.6}.pp-delay-old-date{color:var(--text-muted);text-decoration:line-through}.pp-delay-new-date{color:#10b981;font-weight:700}.pp-phases-grid{flex-wrap:wrap;gap:15px 0;width:100%;display:flex}.pp-phases-grid .pp-phase-col{flex-direction:column;flex:auto;align-items:center;gap:0;min-width:0;display:flex}.pp-phases-grid .pp-phase{border-radius:0;justify-content:center;align-items:center;width:100%;min-height:65px;padding:5px 10px;display:flex}.pp-phases-grid .pp-phase-col:first-child .pp-phase{border-radius:10px 0 0 10px}.pp-phases-grid .pp-phase-col:last-child .pp-phase{border-radius:0 10px 10px 0}.pp-phases-grid .pp-phase-col:only-child .pp-phase{border-radius:10px}.pp-phases-grid-dates{display:contents}.pp-phase-col{flex-direction:column;align-items:center;gap:2px;min-width:0;display:flex}.pp-phase-date-top{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;padding:0 15px;font-weight:500}.pp-phase-date-bottom{font-size:var(--fs-xs);cursor:pointer;color:var(--text-secondary);text-align:center;background:0 0;border:1px solid #0000;border-radius:4px;max-width:100%;padding:1px 4px;font-family:inherit;font-weight:600}.pp-phase-date-bottom:hover{border-color:var(--border)}.pp-phase-date-bottom:focus{border-color:var(--accent);outline:none}.bl-check{color:#0000;cursor:pointer;background:0 0;border:2px solid #ffffff59;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;margin-right:4px;transition:all .2s;display:flex}.bl-check:hover{background:#ffffff1a;border-color:#fffc;transform:scale(1.1)}.bl-check[data-done="1"]{color:#fff;background:#ffffff4d;border-color:#ffffffb3;box-shadow:0 0 6px #fff3}.cpv-task-check{border:2px solid var(--border);color:#0000;cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;transition:all .2s;display:flex}.cpv-task-check:hover{background:#10b9811a;border-color:#10b981;transform:scale(1.1)}.cpv-task-check[data-done="1"]{color:#fff;background:#10b981;border-color:#10b981;transform:scale(1.1);box-shadow:0 2px 8px #10b98166}.cpv-task-check[data-cancelled="1"]{color:#fff;background:#ef4444;border-color:#ef4444;transform:scale(1.1);box-shadow:0 2px 8px #ef444466}.cpv-text-done{color:var(--text-secondary)}.cpv-row-done{background:#10b9810d}.cpv-done-badge{color:#fff;white-space:nowrap;background:#10b981;border-radius:10px;align-items:center;gap:3px;margin-left:8px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-flex}.cpv-cancelled-badge{color:#fff;white-space:nowrap;background:#ef4444;border-radius:10px;align-items:center;gap:3px;margin-left:8px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-flex}.cpv-status-label{font-size:var(--fs-xs);font-weight:700}.cpv-completed-at{font-size:var(--fs-sm);background:var(--bg-card);border:1px solid var(--border);cursor:pointer;width:auto;min-width:130px;transition:var(--transition);color:inherit;color-scheme:dark;border-radius:6px;padding:3px 8px;font-family:inherit;font-weight:600}.cpv-completed-at:hover{border-color:var(--accent);background:var(--accent-bg)}.cpv-completed-at:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow);outline:none}[data-theme=light] .cpv-completed-at{color-scheme:light}.cpv-bar-check{color:#0000;cursor:pointer;background:0 0;border:2px solid #ffffff59;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;transition:all .2s;display:flex}.cpv-bar-check:hover{background:#ffffff1a;border-color:#fffc;transform:scale(1.1)}.cpv-bar-check[data-done="1"]{color:#fff;background:#ffffff4d;border-color:#ffffffb3;box-shadow:0 0 6px #fff3}.cpv-bar-check[data-cancelled="1"]{color:#fff;background:#ef4444;border-color:#ef4444;box-shadow:0 0 6px #ef44444d}.cpv-bar-done{opacity:.55}.cpv-bar-done .cpv-bar-label{text-decoration:line-through}.bl-bar[style] .bl-check[data-done="1"]~.cpv-bar-label{opacity:.7;text-decoration:line-through}[data-theme=light] .pp-phase{color:#000000b3}[data-theme=light] .pp-phase.future{color:var(--text-muted);background:#00000012}[data-theme=light] .pp-phase.done,[data-theme=light] .pp-phase.active{color:#fff}[data-theme=light] .bl-del{color:#0006}[data-theme=light] .bl-del:hover{color:#000c}[data-theme=light] .bl-resize{color:#0006}[data-theme=light] .bl-check{border-color:#0000004d}[data-theme=light] .bl-check:hover{background:#0000000d;border-color:#0009}[data-theme=light] .bl-check[data-done="1"]{color:#000;background:#0003;border-color:#00000080}[data-theme=light] .cpv-bar-check{border-color:#0000004d}[data-theme=light] .cpv-bar-check:hover{background:#0000000d;border-color:#0009}[data-theme=light] .cpv-bar-check[data-done="1"]{color:#000;background:#0003;border-color:#00000080}[data-theme=light] .cpv-bar .cpv-bar-label{text-shadow:none;color:#000c}[data-theme=light] .cpv-bar-resize{color:#0006}.login-container{background:var(--bg-primary);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-form{background:var(--bg-secondary);border:1px solid var(--border);box-shadow:var(--shadow-lg);border-radius:12px;flex-direction:column;gap:12px;width:300px;padding:32px;display:flex}.login-title{text-align:center;color:var(--text-primary);margin:0 0 8px;font-size:1.4em;font-weight:700}.login-input{border:1px solid var(--border);background:var(--bg-primary);color:var(--text-primary);transition:var(--transition);border-radius:8px;outline:none;padding:10px 12px;font-size:.9em}.login-input:focus{border-color:var(--accent)}.login-btn{background:var(--accent);color:#fff;cursor:pointer;transition:var(--transition);border:none;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:10px;font-size:.9em;font-weight:600;display:flex}.login-btn:hover{opacity:.9}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-error{color:#ef4444;text-align:center;font-size:.8em}.completion-popup-overlay{z-index:9999;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.completion-popup{background:var(--bg-secondary);border:1px solid var(--border);width:340px;box-shadow:var(--shadow-lg);border-radius:12px;flex-direction:column;gap:12px;padding:24px;display:flex}.completion-popup-title{color:var(--text-primary);margin:0;font-size:1em;font-weight:600}.completion-popup-input{border:1px solid var(--border);background:var(--bg-primary);color:var(--text-primary);resize:none;border-radius:8px;outline:none;padding:10px;font-family:inherit;font-size:.85em}.completion-popup-input:focus{border-color:var(--accent)}.completion-popup-actions{justify-content:flex-end;gap:8px;display:flex}.completion-popup-cancel{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:8px;padding:8px 14px;font-size:.85em}.completion-popup-confirm{color:#fff;cursor:pointer;background:#10b981;border:none;border-radius:8px;padding:8px 14px;font-size:.85em;font-weight:600}.completion-popup-confirm:hover{opacity:.9}.auth-users-modal{width:400px;max-height:80vh;overflow-y:auto}.auth-users-list{flex-direction:column;gap:4px;margin:12px 0;display:flex}.users-view{height:100%;padding:24px 32px;overflow-y:auto}.users-view-header{align-items:baseline;gap:12px;margin-bottom:20px;display:flex}.users-view-header h2{font-size:var(--fs-lg);color:var(--text-primary);margin:0}.users-view-count{font-size:var(--fs-xs);color:var(--text-muted)}.users-view-content{grid-template-columns:1fr 320px;align-items:start;gap:24px;display:grid}.users-view-table-wrap{overflow-x:auto}.users-view-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.users-view-table th{text-align:left;color:var(--text-muted);border-bottom:2px solid var(--border);font-weight:600;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.5px;padding:10px 12px}.users-view-table td{border-bottom:1px solid var(--border);padding:10px 12px}.users-view-table tbody tr:hover{background:var(--bg-secondary)}.users-row-active{background:var(--accent-bg)!important}.users-cell-name{color:var(--text-primary);font-weight:600}.users-cell-actions{gap:6px;display:flex}.users-btn-edit,.users-btn-del{cursor:pointer;font-size:var(--fs-sm);color:var(--text-muted);background:0 0;border:none;border-radius:4px;padding:4px 6px}.users-btn-edit:hover{color:var(--accent);background:var(--accent-bg)}.users-btn-del:hover{color:#ef4444;background:#ef44441a}.users-role-badge{font-size:var(--fs-xs);border-radius:10px;padding:4px 10px;font-weight:600}.users-role-superadmin{color:#8b5cf6;background:#8b5cf626}.users-role-admin{color:#3b82f6;background:#3b82f626}.users-role-user{color:#6b7280;background:#6b728026}.users-view-form{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;padding:20px}.users-view-form h3{font-size:var(--fs-md);color:var(--text-primary);margin:0 0 12px}.users-form-grid{flex-direction:column;gap:8px;display:flex}.users-form-grid .input{font-size:var(--fs-sm)}.users-checkbox{font-size:var(--fs-xs);color:var(--text-secondary);align-items:center;gap:6px;margin-top:8px;display:flex}.users-boards-section{font-size:var(--fs-xs);margin-top:8px}.users-boards-label{color:var(--text-secondary);font-weight:600}.users-boards-list{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.users-board-check{color:var(--text-secondary);align-items:center;gap:3px;display:flex}.users-form-actions{justify-content:flex-end;gap:8px;margin-top:12px;display:flex}.auth-user-row{background:var(--bg-primary);border-radius:6px;align-items:center;gap:8px;padding:6px 8px;display:flex}.auth-user-name{flex:1;font-size:.85em;font-weight:500}.auth-user-role{color:var(--text-muted);background:var(--bg-secondary);border-radius:4px;padding:2px 6px;font-size:.75em}.auth-user-position{color:var(--accent);font-size:.75em}.auth-user-edit,.auth-user-del{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:2px 4px;font-size:.9em}.auth-user-edit:hover{color:var(--accent)}.auth-user-del:hover{color:#ef4444}.auth-users-form{flex-direction:column;gap:8px;display:flex}.cpv-resp-select{width:100%;color:var(--text-primary);font-size:inherit;cursor:pointer;background:0 0;border:none;outline:none;padding:2px 0;font-family:inherit}.auth-user-label{color:var(--text-muted);font-size:.75em;font-weight:500}.auth-actions{align-items:center;gap:8px;display:flex;position:absolute;top:20px;right:15px}.cpv-row-disabled{opacity:.5}[data-role=user] .badge:hover{box-shadow:none;transform:none}[data-role=user] .badge-icon:hover{background:0 0;transform:none}[data-role=user] .badge{cursor:default}.auth-boards-section{flex-direction:column;gap:4px;display:flex}.auth-boards-label{color:var(--text-muted);font-size:.75em;font-weight:500}.auth-boards-list{flex-wrap:wrap;gap:6px;display:flex}.auth-board-check{cursor:pointer;align-items:center;gap:4px;font-size:.8em;display:flex}.user-tab-edit-input{border:none;border-bottom:1px solid var(--accent);color:var(--text-primary);font-size:inherit;background:0 0;outline:none;width:80px;font-family:inherit}.cpv-plan-selector{align-items:center;gap:6px;margin-left:8px;display:flex}.cpv-plan-select{background:var(--bg-primary);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;border-radius:6px;padding:3px 8px;font-family:inherit;font-size:.8em}.cpv-plan-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border-radius:4px;padding:4px 8px;font-size:14px;position:relative}.cpv-plan-btn:hover{color:var(--accent);border-color:var(--accent)}.cpv-plan-btn[title]:hover:after{content:attr(title);background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);z-index:100;pointer-events:none;white-space:nowrap;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:600;position:absolute;bottom:-26px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000026}.cpv-apply-plan-btn{background:var(--accent);border-color:var(--accent);padding:2px 10px;font-weight:600;color:#fff!important}.cpv-apply-plan-btn:hover{opacity:.85}.cpv-publish-btn{background:#3b82f626;border-color:#3b82f6}.cpv-plan-active-indicator{color:var(--text-muted);background:var(--bg-secondary);white-space:nowrap;border-radius:4px;padding:2px 8px;font-size:.75em}.cpv-toast{background:var(--accent);color:#fff;z-index:9999;border-radius:8px;padding:10px 20px;font-size:.85em;font-weight:500;animation:.3s cpv-toast-in;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0003}.cpv-toast-warn{background:#f59e0b}@keyframes cpv-toast-in{0%{opacity:0;transform:translate(-50%)translateY(10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.cpv-url-btn{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border-radius:4px;align-items:center;gap:4px;padding:3px 8px;font-size:.8em;display:flex;position:relative}.cpv-url-btn:hover{color:var(--accent);border-color:var(--accent)}.cpv-url-btn[title]:hover:after{content:attr(title);background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);z-index:100;pointer-events:none;white-space:nowrap;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:600;position:absolute;bottom:-26px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000026}.cpv-url-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cpv-url-input{background:var(--bg-primary);border:1px solid var(--accent);color:var(--text-primary);border-radius:6px;width:220px;padding:3px 8px;font-family:inherit;font-size:.8em}.cpv-tpl-url-spacer{flex:1}.cpv-plan-empty{color:var(--text-muted);font-size:.8em;font-style:italic}.cpv-resp-tags{flex-wrap:nowrap;align-items:center;gap:3px;display:flex;overflow:hidden}.cpv-resp-tag{font-size:var(--fs-xs,.75em);color:var(--text-primary);white-space:nowrap;background:0 0;border:none;border-radius:10px;align-items:center;gap:3px;padding:4px 10px;font-weight:500;display:inline-flex}.cpv-resp-tag-x{color:var(--text-secondary);cursor:pointer;opacity:.6;background:0 0;border:none;padding:0 1px;font-size:1.1em;line-height:1}.cpv-resp-tag-x:hover{opacity:1;color:#ef4444}.cpv-resp-add-wrap{cursor:pointer;display:inline-flex;position:relative}.cpv-resp-add{color:#10b981;cursor:pointer;appearance:none;opacity:0;background:0 0;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.cpv-board-group{border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:0;display:flex}.cpv-board-group .cpv-board-select{border:none;border-right:1px solid var(--border);border-radius:0;padding:6px 8px}.cpv-board-group .cpv-import-btn{border:none;border-radius:0}.cpv-board-select{background:var(--bg-primary);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;padding:4px 8px;font-family:inherit;font-size:.8em}.badge-participants{flex-wrap:wrap;align-items:center;gap:3px;display:flex}.badge-resp-placeholder{color:var(--text-muted);cursor:pointer;font-size:.7em;font-weight:600}.badge-resp-label{opacity:.6;margin-right:2px;font-size:.7em}.cpv-readonly .cpv-bar,.cpv-readonly .cpv-bar-resize,.cpv-readonly .cpv-cell{pointer-events:none}.cpv-readonly .cpv-bar-check{display:none}.cpv-readonly .cpv-row-left{opacity:.85}.cpv-completed-at-wrap{align-items:center;display:inline-flex}.cpv-completed-at-hidden{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.cpv-list-view{flex:1;padding:8px 16px;overflow-y:auto}.cpv-container[data-cpv-zoom="0"] .cpv-list-view{font-size:14px}.cpv-container[data-cpv-zoom="1"] .cpv-list-view{font-size:17px}.cpv-container[data-cpv-zoom="2"] .cpv-list-view{font-size:20px}.cpv-container[data-cpv-zoom="3"] .cpv-list-view{font-size:22px}.cpv-container[data-cpv-zoom="4"] .cpv-list-view{font-size:25px}.cpv-list-item{border:1px solid var(--border);transition:var(--transition);border-radius:6px;justify-content:space-between;align-items:center;margin-bottom:4px;padding:8px 12px;display:flex}.cpv-list-item:hover{background:var(--bg-secondary)}.cpv-list-done{background:#10b9810a}.cpv-list-blocked{border-left:3px solid #f59e0b}.cpv-list-left{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.cpv-list-title{font-size:.85em}.cpv-list-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.cpv-list-dates{color:var(--text-muted);white-space:nowrap;font-size:.75em}.cpv-list-dep{color:var(--accent);white-space:nowrap;text-overflow:ellipsis;font-size:.8em;overflow:hidden}.cpv-list-pill{background:var(--bg-secondary);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;white-space:nowrap;border-radius:12px;align-items:center;gap:4px;max-width:120px;padding:2px 8px;font-size:.75em;display:inline-flex;position:relative}.cpv-list-pill span{text-overflow:ellipsis;overflow:hidden}.cpv-list-pill select{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.cpv-list-dep-select{font-size:inherit;background:var(--bg-primary);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;border-radius:4px;padding:2px 4px}.cpv-blocked-icon{color:#f59e0b;font-size:.7em}.cpv-group-row{background:var(--bg-secondary);cursor:pointer;gap:6px;padding:0 8px;font-size:.8em;font-weight:600;position:relative}.cpv-group-row:hover{background:var(--bg-primary)}.cpv-group-drop-target{outline:2px solid var(--accent);outline-offset:-2px;background:var(--bg-primary)!important}.cpv-dnd-row{position:relative}.cpv-dnd-dragging{opacity:.4}.cpv-dnd-locked{cursor:default}.cpv-dnd-locked .cpv-drag-handle,.cpv-dnd-locked .cpv-drag-handle-icon{opacity:.2;cursor:not-allowed}.cpv-dnd-row.drop-above:before{content:"";background:var(--accent);z-index:5;height:2px;position:absolute;top:0;left:0;right:0}.cpv-dnd-row.drop-below:after{content:"";background:var(--accent);z-index:5;height:2px;position:absolute;bottom:0;left:0;right:0}.cpv-dnd-row.drop-on>.cpv-row-left{outline:2px solid var(--accent);outline-offset:-2px;background:var(--bg-primary)}.cpv-drag-handle-icon{color:var(--text-muted);cursor:grab;flex-shrink:0}.cpv-group-chevron{color:var(--text-muted);cursor:pointer;width:16px;font-size:1em}.cpv-group-title{text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:1.3em;font-weight:600;overflow:hidden}.cpv-group-count{color:var(--text-muted);background:var(--bg-primary);border-radius:10px;margin-left:.3em;padding:.1em .5em;font-size:1.5em;font-weight:700}.cpv-list-group-count{color:var(--text-muted);background:var(--bg-primary);border-radius:10px;margin-left:4px;padding:2px 7px;font-size:.75em;font-weight:700}.cpv-list-group-count:before{content:"("}.cpv-list-group-count:after{content:")"}.cpv-group-count:before{content:"("}.cpv-group-count:after{content:")"}.cpv-row-left.cpv-row-child .cpv-cell-act{padding-left:12px}.cpv-dnd-row:has(.cpv-row-child){border-left:3px solid var(--accent);margin-left:4px}.cpv-row-active{background:#10b9810d}.cpv-active-pin{color:#10b981;z-index:2;font-size:1.4em;animation:1.5s ease-in-out infinite cpv-pin-pulse;position:absolute;left:2px}@keyframes cpv-pin-pulse{0%,to{opacity:1;transform:translate(0)}50%{opacity:.5;transform:translate(2px)}}.cpv-overdue-dot{z-index:2;background:#ef4444;border-radius:50%;width:8px;height:8px;animation:1.5s ease-in-out infinite cpv-dot-pulse;position:absolute;left:4px}@keyframes cpv-dot-pulse{0%,to{opacity:1}50%{opacity:.4}}.cpv-group-pick{cursor:pointer;align-items:center;margin-left:4px;display:inline-flex;position:relative}.cpv-group-select{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.cpv-list-grouped{padding-left:24px}.cpv-list-group-header{background:var(--bg-secondary);cursor:pointer;justify-content:flex-start;gap:8px;font-weight:600}.cpv-grid-row-group{background:var(--bg-secondary)}.cpv-bar-group{opacity:.4;border-radius:2px;transform:translateY(-50%);background:var(--text-muted)!important;height:6px!important;top:50%!important}.cpv-bar-group .cpv-bar-label{display:none}.templates-section{width:100%;max-width:800px;height:100%;margin:0 auto;padding:24px;overflow-y:auto}.templates-section-header{align-items:center;gap:12px;margin-bottom:16px;display:flex}.templates-section-title{align-items:center;gap:8px;margin:0;font-size:1.2em;font-weight:700;display:flex}.templates-tabs{border-bottom:2px solid var(--border);gap:4px;margin-bottom:16px;padding-bottom:4px;display:flex}.templates-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px 6px 0 0;padding:6px 14px;font-size:.9em;font-weight:500}.templates-tab.active{background:var(--bg-secondary);color:var(--text-primary);border-bottom:2px solid var(--accent);margin-bottom:-6px}.templates-content{flex-direction:column;gap:12px;display:flex}.templates-export{gap:24px}.templates-export-section{border:1px solid var(--border);border-radius:8px;padding:16px}.templates-export-section h4{margin:0 0 6px;font-size:1em}.templates-export-desc{color:var(--text-muted);margin:0 0 12px;font-size:.85em}.templates-message{background:var(--accent);color:#fff;border-radius:6px;margin-bottom:12px;padding:8px 12px;font-size:.85em}.templates-create{gap:8px;margin-bottom:16px;display:flex}.templates-create .input{flex:1}.templates-list{flex-direction:column;gap:6px;display:flex}.template-item{border:1px solid var(--border);border-radius:6px;overflow:hidden}.template-header{cursor:pointer;align-items:center;gap:8px;padding:8px 12px;display:flex}.template-header:hover{background:var(--bg-secondary)}.template-name{flex:1;font-size:.9em;font-weight:500}.template-count{color:var(--text-muted);font-size:.75em}.template-tasks-preview{padding:4px 12px 8px 28px}.template-task-row{align-items:center;gap:6px;padding:2px 0;font-size:.8em;display:flex}.template-task-pos{color:var(--text-muted);min-width:20px}.template-task-title{flex:1}.template-task-days{color:var(--accent);font-size:.85em}.template-task-dep{color:var(--text-muted);font-size:.85em}.template-empty{color:var(--text-muted);text-align:center;padding:12px;font-size:.8em}.template-edit{flex-direction:column;gap:8px;padding:8px 12px;display:flex}.template-edit-tasks{flex-direction:column;gap:4px;display:flex}.template-edit-row{align-items:center;gap:4px;display:flex}.template-edit-title{flex:1;font-size:.8em}.template-edit-days{width:50px;font-size:.8em}.template-edit-dep{width:110px;font-size:.75em}.template-edit-actions{gap:6px;display:flex}.mp-panel{width:100%;max-width:100%;padding:16px;overflow-y:auto}.mp-title{font-size:var(--fs-lg,1.1em);color:var(--text-primary);margin:0 0 12px;font-weight:700}.mp-filters{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:16px;display:flex}.mp-filter{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);border-radius:6px;padding:4px 8px;font-family:inherit;font-size:.75em}.mp-filter-clear{color:var(--danger);cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:1em}.mp-section{margin-bottom:12px}.mp-section-header{font-size:var(--fs-select,.8em);align-items:center;gap:6px;margin-bottom:6px;font-weight:600;display:flex}.mp-count{background:color-mix(in srgb, currentColor 15%, transparent);border-radius:8px;padding:1px 6px;font-size:.9em}.mp-item{font-size:var(--fs-badge,.8em);align-items:center;gap:6px;padding:4px 0;display:flex}.mp-item-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.mp-item-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text-primary);flex:1;overflow:hidden}.mp-item-link{cursor:pointer}.mp-item-link:hover{color:var(--accent);text-decoration:underline}.mp-item-dates{color:var(--text-muted);white-space:nowrap}.mp-item-days{color:var(--text-muted);font-weight:500}.mp-item-days.mp-overdue{color:#ef4444}.mp-empty{font-size:var(--fs-select,.8em);color:var(--text-muted);text-align:center;margin-top:20px}.today-upcoming{border-top:1px solid var(--border);margin-top:24px;padding-top:16px}.today-upcoming-title{color:var(--text-muted);margin:0 0 12px;font-size:.9em;font-weight:600}.mp-item-today{background:color-mix(in srgb, var(--accent) 8%, transparent);border-left:3px solid var(--accent);border-radius:6px;padding:6px 8px!important}.mp-item-status{white-space:nowrap;font-size:.85em;font-weight:500}.mp-item-status-select{cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:.8em;font-weight:600}.team-view-wrap{flex-direction:column;flex:1;min-height:0;display:flex}.team-filters-bar{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:8px 16px;display:flex}.team-bar-title{font-weight:700;font-size:var(--fs-md)}.team-filter-label{font-size:var(--fs-xs);color:var(--text-muted);font-weight:500}.team-list-view{flex:1;padding:20px;overflow-y:auto}.team-list-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.team-stats{font-size:var(--fs-xs);gap:12px;display:flex}.team-filters{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.team-groups{flex-direction:column;gap:16px;display:flex}.team-group{background:var(--bg-card);border-radius:var(--radius-sm);padding:12px}.team-group-header{border-bottom:1px solid var(--border);align-items:center;gap:8px;margin-bottom:8px;padding-bottom:8px;display:flex}.team-group-name{font-weight:600;font-size:var(--fs-md)}.team-group-count{font-size:var(--fs-xs);color:var(--text-muted);background:var(--bg-primary);border-radius:10px;padding:1px 7px}.team-group-tasks{flex-direction:column;gap:4px;display:flex}.team-task{cursor:pointer;border-radius:4px;align-items:center;gap:8px;padding:6px 8px;transition:background .15s;display:flex}.team-task:hover{background:var(--bg-primary)}.team-task-done{opacity:.5}.team-task-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.team-task-title{font-size:var(--fs-sm);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.team-task-status{font-size:var(--fs-xs);flex-shrink:0;font-weight:600}.team-task-dates{font-size:var(--fs-xs);color:var(--text-muted);flex-shrink:0}.cpv-summary-view{flex:1;padding:16px;overflow-y:auto}.cpv-summary-table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.cpv-summary-table th{text-align:left;border-bottom:2px solid var(--border);color:var(--text-muted);padding:8px 12px;font-weight:600}.cpv-summary-table td{border-bottom:1px solid var(--border);padding:10px 12px}.cpv-summary-name{font-weight:600}.cpv-summary-done{opacity:.5}.cpv-summary-status{font-size:var(--fs-xs);color:var(--text-muted);font-weight:600}.cpv-summary-status.done{color:#10b981}.cpv-paused-badge{font-size:var(--fs-xs);color:#6b7280;background:#6b728026;border:1px dashed #6b7280;border-radius:12px;padding:3px 10px;font-weight:600}.excel-view{flex-direction:column;height:100%;display:flex;overflow:hidden}.excel-palette{border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:4px;padding:6px 12px;display:flex}.excel-palette .cpv-color-dot.active{box-shadow:0 0 0 2px var(--accent);transform:scale(1.3)}.excel-add-btn{border:1px solid var(--border);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;border-radius:4px;padding:3px 8px;font-size:14px;font-weight:600}.excel-add-btn:hover{background:var(--bg-card-hover);color:var(--text-primary)}.excel-palette-sep{background:var(--border);width:1px;height:16px;margin:0 4px}.excel-color-pick-wrap{position:relative}.excel-active-color{border:2px solid var(--border);cursor:pointer;border-radius:6px;width:28px;height:28px;transition:transform .1s}.excel-active-color:hover{border-color:var(--accent);transform:scale(1.1)}.excel-eraser-btn{border:1px solid var(--border);cursor:pointer;width:28px;height:28px;color:var(--text-muted);background:0 0;border-radius:6px;justify-content:center;align-items:center;display:flex}.excel-eraser-btn:hover{border-color:var(--accent);color:var(--accent)}.excel-tool-active{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.excel-hover-row{pointer-events:none;z-index:2;background:#8080801a;position:absolute;left:0}.excel-hover-col{pointer-events:none;z-index:2;background:#8080801a;position:absolute;top:0}.excel-color-btn{cursor:pointer;border:2px solid #0000;border-radius:4px;width:20px;height:20px;transition:transform .1s}.excel-color-btn.active{border-color:var(--text-primary);transform:scale(1.2)}.excel-color-btn:hover{transform:scale(1.15)}.excel-eraser{background:var(--bg-secondary);border:1px solid var(--border);justify-content:center;align-items:center;display:flex}.excel-badges{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:4px;padding:4px 12px;display:flex}.excel-badge{cursor:pointer;border:2px solid #0000;border-radius:12px;padding:2px 8px;font-size:14px;font-weight:700}.excel-badge:hover{opacity:.8}.excel-badge-active{border-color:var(--text-primary);transform:scale(1.1)}.excel-badge-add{border:1px dashed var(--text-muted);width:20px;height:20px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:flex}.excel-main-area{flex:1;display:flex;position:relative;overflow:hidden}.excel-grid-wrapper{flex-direction:column;flex:1;display:flex;overflow:hidden}.excel-unified-body{flex:1;overflow:auto}.excel-unified-inner{flex-direction:column;display:flex}.excel-sticky-header{z-index:3;background:var(--bg-secondary);display:flex;position:sticky;top:0}.excel-sticky-header .excel-left-header{z-index:4;background:var(--bg-secondary);position:sticky;left:0}.excel-body-rows{align-items:flex-start;display:flex}.excel-left-col{z-index:2;background:var(--bg-primary);border-right:2px solid var(--border);flex-shrink:0;position:sticky;left:0}.excel-right-col{flex-shrink:0}.excel-right-header-inner{flex-direction:column;display:flex;overflow:hidden}.excel-sidebar{border-left:1px solid var(--border);background:var(--bg-secondary);flex-direction:column;gap:8px;width:540px;min-width:540px;padding:10px;display:flex;overflow-y:auto}.excel-sb-header{align-items:center;gap:4px;display:flex}.excel-sb-header select,.excel-sb-header button{font-size:14px}.excel-sb-toggle{z-index:5;background:var(--bg-secondary);border:1px solid var(--border);cursor:pointer;color:var(--text-muted);border-right:none;border-radius:4px 0 0 4px;padding:8px 3px;font-size:10px;position:absolute;top:50%;right:0;transform:translateY(-50%)}.excel-left-header{border-bottom:1px solid var(--border);background:var(--bg-secondary);box-sizing:border-box;flex-shrink:0;align-items:center;display:flex}.excel-lh-col{color:var(--text-muted);border-right:1px solid var(--border);justify-content:center;align-items:center;height:100%;font-size:11px;font-weight:600;display:flex;position:relative}.excel-col-resize{cursor:col-resize;z-index:2;width:8px;position:absolute;top:0;bottom:0;right:-4px}.excel-col-resize:hover{background:var(--accent);opacity:.5}.excel-left-row{box-shadow:0 1px 0 var(--border);box-sizing:border-box;align-items:center;gap:4px;padding:0 4px;display:flex}.excel-left-text{white-space:nowrap;text-overflow:ellipsis;color:var(--text-primary);cursor:default;padding:4px;font-size:13px;overflow:hidden}.excel-title-input{width:100%;height:100%;color:var(--text-primary);box-sizing:border-box;outline:2px solid var(--accent);outline-offset:-2px;background:0 0;border:none;padding:4px;font-size:13px}.excel-resp-input{width:100%;height:100%;color:var(--text-primary);text-align:center;box-sizing:border-box;background:0 0;border:none;padding:4px;font-size:13px}.excel-resp-input:focus{outline:2px solid var(--accent);outline-offset:-2px}.excel-resp-text{color:var(--text-secondary);text-overflow:ellipsis;word-wrap:break-word;padding:2px 20px;font-size:11px;line-height:1.2;overflow:hidden}.excel-group-row{font-weight:700;background:#80808026!important}.excel-group-row .excel-left-text{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;font-size:10px}.excel-group-chevron{cursor:pointer;color:var(--text-muted);border:1.5px solid var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;display:inline-flex}.excel-group-chevron:hover{border-color:var(--accent);color:var(--accent)}.excel-check{border:1.5px solid var(--border);cursor:pointer;color:#0000;background:0 0;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;width:14px;height:14px;margin-right:4px;font-size:9px;display:inline-flex}.excel-check[data-done="1"]{color:#fff;background:#10b981;border-color:#10b981}.excel-check:hover{border-color:var(--accent)}.excel-group-count{color:var(--text-muted);margin-left:4px;font-size:10px;font-weight:400}.excel-consolidated-toggle{cursor:pointer;flex-shrink:0;align-items:center;margin-right:4px;display:inline-flex}.excel-consolidated-toggle input{width:15px;height:15px;margin:0}.excel-consolidated-label{color:var(--accent);margin-left:2px;font-size:11px;font-weight:700}.excel-save-btn{color:#fff;cursor:default;opacity:.5;background:#6b7280;border:none;border-radius:4px;align-items:center;gap:4px;margin-left:auto;padding:4px 12px;font-size:11px;font-weight:600;display:flex}.excel-save-btn.excel-save-dirty{cursor:pointer;opacity:1;background:#10b981}.excel-save-btn.excel-save-dirty:hover{background:#059669}.excel-legend{flex-direction:column;gap:4px;margin-left:12px;display:flex}.excel-catalog-controls{align-items:center;gap:4px;display:flex}.excel-catalog-table{border-collapse:collapse;font-size:10px}.excel-catalog-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);padding:6px;font-size:15px;font-weight:600}.excel-catalog-table td{border:1px solid var(--border);vertical-align:middle;padding:0}.excel-cat-input{width:100%;color:var(--text-primary);text-align:center;text-transform:uppercase;box-sizing:border-box;background:0 0;border:none;padding:6px;font-size:15px}.excel-cat-input:focus{outline:2px solid var(--accent);outline-offset:-2px}.excel-legend-dot{cursor:pointer;vertical-align:middle;border:1px solid #00000026;border-radius:4px;width:16px;height:16px;display:inline-block}.excel-catalog-table td:first-child{width:60px}.excel-catalog-table td:nth-child(2){cursor:pointer;width:40px;min-height:30px}.excel-cat-colors{z-index:20;background:var(--bg-primary);border:1px solid var(--border);border-radius:6px;padding:6px;position:absolute;top:100%;left:0;box-shadow:0 4px 12px #0003}.excel-cat-picker-wrap{z-index:20;background:var(--bg-primary);border:1px solid var(--border);border-radius:8px;width:180px;padding:4px;position:absolute;top:100%;left:0;box-shadow:0 4px 12px #0003}.excel-cat-select{width:100%;color:var(--text-primary);box-sizing:border-box;background:0 0;border:none;padding:6px;font-size:15px}.excel-cat-select:focus{outline:2px solid var(--accent);outline-offset:-2px}.excel-cat-resp-cell{vertical-align:middle}.excel-cat-resp-tags{flex-wrap:wrap;align-items:center;gap:3px;padding:4px;display:flex}.excel-cat-resp-tag{font-size:var(--fs-xs);background:var(--accent-bg);color:var(--text-primary);white-space:nowrap;border-radius:8px;align-items:center;gap:2px;padding:2px 6px;display:inline-flex}.excel-cat-resp-tag button{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:0 2px;font-size:.9em}.excel-cat-resp-tag button:hover{color:#ef4444}.excel-cat-resp-add{font-size:var(--fs-xs);border:1px dashed var(--border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;width:28px;padding:2px 4px}.excel-cat-desc{width:100%;color:var(--text-primary);box-sizing:border-box;word-wrap:break-word;overflow-wrap:break-word;background:0 0;border:none;padding:6px;font-size:15px}.excel-cat-desc:focus{outline:2px solid var(--accent);outline-offset:-2px}.excel-cat-add{align-items:center;gap:4px;display:flex}.excel-cat-empty{color:var(--text-muted);padding:4px;font-size:10px}.excel-cat-del{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:14px}.excel-cat-del:hover{color:#ef4444}.excel-cat-add-row{opacity:.7}.excel-cat-add-btn{border:1px dashed var(--border);width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:4px;padding:4px;font-size:11px}.excel-cat-add-btn:hover{border-color:var(--accent);color:var(--accent)}.excel-cat-hint{color:var(--text-muted);font-size:9px}.excel-legend-select{border:1px solid var(--border);background:var(--bg-primary);color:var(--text-muted);cursor:pointer;border-radius:3px;padding:2px 4px;font-size:10px}.excel-legend-btn{border:1px solid var(--border);background:var(--bg-primary);color:var(--text-secondary);cursor:pointer;border-radius:3px;padding:2px 8px;font-size:10px}.excel-legend-btn:hover{background:var(--bg-card-hover)}.excel-legend-item{cursor:pointer}.excel-legend-item:hover{opacity:.6}.excel-float-input{z-index:10;border:2px solid var(--accent);background:var(--bg-primary);color:var(--text-primary);text-align:center;box-sizing:border-box;outline:none;padding:0;font-size:10px;font-weight:700;position:absolute}.excel-right-header{border-bottom:1px solid var(--border);background:var(--bg-secondary);box-sizing:border-box;flex-shrink:0;overflow:hidden}.excel-header-months,.excel-header-weeks,.excel-header-days{display:flex}.excel-month-cell{text-align:center;color:var(--text-muted);border-right:1px solid var(--border);border-left:2px solid var(--text-muted);text-transform:uppercase;padding:2px 0;font-size:10px;font-weight:700}.excel-day-cell{text-align:center;color:var(--text-secondary);border-right:1px solid var(--border);padding:2px 0;font-size:10px;line-height:1.2}.excel-day-today{color:var(--accent);background:#3ecf8e40;font-weight:700}.excel-day-weekend,.excel-day-inactive{color:#ef4444;background:#ef44441a}.excel-day-today.excel-day-weekend,.excel-day-today.excel-day-inactive{color:var(--accent);background:#3ecf8e40}.excel-row:hover,.excel-left-row:hover{background:var(--bg-card-hover)}.excel-ghost-row{opacity:.5;cursor:pointer;border-top:1px dashed var(--border)}.excel-ghost-row:hover{opacity:.8;background:var(--accent-bg,#3ecf8e14)}.excel-paste-target{box-shadow:inset 0 0 0 1.5px #3b82f680;background:#3b82f626!important}.excel-ghost-text{color:var(--text-muted);font-size:.75em;font-style:italic}.excel-row-del{color:#ef4444;cursor:pointer;opacity:.3;background:0 0;border:1.5px solid #ef4444;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;padding:0;font-size:10px;line-height:1;display:flex}.excel-row-dup{color:#3b82f6;cursor:pointer;opacity:.3;background:0 0;border:1.5px solid #3b82f6;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;padding:0;font-size:10px;line-height:1;display:flex}.excel-left-row:hover .excel-row-del,.excel-left-row:hover .excel-row-dup{opacity:1}.excel-row-selected{background:#3ecf8e26!important}.excel-child-row{padding-left:20px!important}.excel-drag-handle{cursor:grab;color:var(--text-muted);opacity:0;flex-shrink:0;align-items:center;display:flex}.excel-left-row:hover .excel-drag-handle{opacity:.6}.excel-view[data-zoom="0"] .excel-left-text{font-size:9px}.excel-view[data-zoom="0"] .excel-cell-text{font-size:7px}.excel-view[data-zoom="0"] .excel-day-cell,.excel-view[data-zoom="0"] .excel-month-cell,.excel-view[data-zoom="0"] .excel-lh-col,.excel-view[data-zoom="0"] .excel-group-count,.excel-view[data-zoom="0"] .excel-resp-text{font-size:8px}.excel-view[data-zoom="1"] .excel-left-text{font-size:11px}.excel-view[data-zoom="1"] .excel-cell-text{font-size:9px}.excel-view[data-zoom="1"] .excel-month-cell,.excel-view[data-zoom="1"] .excel-lh-col,.excel-view[data-zoom="1"] .excel-group-count,.excel-view[data-zoom="1"] .excel-resp-text{font-size:10px}.excel-view[data-zoom="2"] .excel-left-text{font-size:12px}.excel-view[data-zoom="2"] .excel-cell-text{font-size:10px}.excel-view[data-zoom="3"] .excel-left-text{font-size:14px}.excel-view[data-zoom="3"] .excel-cell-text,.excel-view[data-zoom="3"] .excel-day-cell{font-size:12px}.excel-view[data-zoom="3"] .excel-month-cell,.excel-view[data-zoom="3"] .excel-lh-col,.excel-view[data-zoom="3"] .excel-group-count,.excel-view[data-zoom="3"] .excel-resp-text{font-size:13px}.excel-view[data-zoom="4"] .excel-left-text{font-size:16px}.excel-view[data-zoom="4"] .excel-cell-text,.excel-view[data-zoom="4"] .excel-day-cell{font-size:14px}.excel-view[data-zoom="4"] .excel-month-cell,.excel-view[data-zoom="4"] .excel-lh-col,.excel-view[data-zoom="4"] .excel-group-count,.excel-view[data-zoom="4"] .excel-resp-text{font-size:15px}.excel-view[data-zoom="0"] .excel-row-del,.excel-view[data-zoom="0"] .excel-row-dup{width:12px;height:12px;font-size:7px}.excel-view[data-zoom="1"] .excel-row-del,.excel-view[data-zoom="1"] .excel-row-dup{width:14px;height:14px;font-size:9px}.excel-view[data-zoom="3"] .excel-row-del,.excel-view[data-zoom="3"] .excel-row-dup{width:20px;height:20px;font-size:12px}.excel-view[data-zoom="4"] .excel-row-del,.excel-view[data-zoom="4"] .excel-row-dup{width:24px;height:24px;font-size:14px}.cpv-float-views{background:var(--bg-secondary);border:1px solid var(--border);z-index:50;border-radius:24px;gap:6px;padding:6px 10px;display:flex;position:fixed;bottom:20px;right:20px;box-shadow:0 4px 16px #0003}.cpv-float-btn{width:32px;height:32px;color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.cpv-float-btn:hover{background:var(--bg-card-hover);color:var(--text-primary)}.cpv-float-btn.active{background:var(--accent);color:#fff}.cpv-float-btn[title]:hover:after{content:attr(title);background:var(--bg-primary);color:var(--text-primary);border:1px solid var(--border);z-index:100;pointer-events:none;white-space:nowrap;border-radius:4px;padding:3px 8px;font-size:10px;font-weight:600;position:absolute;bottom:38px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #00000026}.cpv-list-segment{padding-left:36px!important}.cpv-list-seg-dot{border-radius:3px;flex-shrink:0;width:10px;height:10px;margin-right:6px}.cpv-list-resp{color:var(--text-muted);margin-right:8px;font-size:.85em}.today-task-parent{font-weight:600}.today-task-segment{padding-left:20px}.today-task-days{color:var(--text-muted);font-size:.85em}.pend-view{flex-direction:column;height:100%;padding:16px 24px;display:flex;overflow:hidden}.pend-header{flex-shrink:0;align-items:center;gap:12px;margin-bottom:8px;display:flex}.pend-title{color:var(--text-primary);margin:0;font-size:1.1em;font-weight:700}.pend-summary{color:var(--text-muted);gap:10px;margin-left:auto;font-size:12px;display:flex}.pend-filters{flex-shrink:0;gap:8px;margin-bottom:16px;display:flex}.pend-filter-select{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);border-radius:6px;padding:4px 10px;font-size:13px}.pend-body{flex-direction:column;flex:1;gap:16px;display:flex;overflow-y:auto}.pend-user-group{background:var(--bg-secondary);border-radius:10px;padding:12px 16px}.pend-user-header{cursor:pointer;user-select:none;border-bottom:1px solid var(--border);align-items:center;gap:8px;padding-bottom:8px;display:flex}.pend-user-name{color:var(--text-primary);font-size:14px;font-weight:700}.pend-section-count{background:var(--border);color:var(--text-secondary);border-radius:10px;padding:1px 7px;font-size:11px}.pend-user-tasks{flex-direction:column;margin-top:8px;display:flex}.pend-row{align-items:center;gap:10px;padding:6px 0;display:flex}.pend-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.pend-row-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;overflow:hidden}.pend-siglas{color:var(--text-muted);text-transform:uppercase;font-size:11px;font-weight:600}.pend-row-status{color:#f59e0b;white-space:nowrap;font-size:11px;font-weight:600}.pend-row-overdue{color:#ef4444}.pend-row-dates{color:var(--text-muted);white-space:nowrap;font-size:11px}.notif-wrap{position:relative}.notif-bell{color:var(--text-muted);cursor:pointer;transition:var(--transition);background:0 0;border:none;border-radius:4px;padding:4px;position:relative}.notif-bell:hover{color:var(--accent)}.notif-badge{color:#fff;background:#ef4444;border-radius:8px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 3px;font-size:9px;font-weight:700;display:flex;position:absolute;top:-2px;right:-2px}.notif-dropdown{background:var(--bg-secondary);border:1px solid var(--border);z-index:1000;border-radius:8px;flex-direction:column;width:320px;max-height:400px;display:flex;position:absolute;top:100%;right:0;overflow:hidden;box-shadow:0 8px 24px #0003}.notif-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:10px 14px;font-size:.85em;font-weight:600;display:flex}.notif-mark-all{color:var(--accent);cursor:pointer;background:0 0;border:none;font-size:.75em}.notif-list{flex:1;overflow-y:auto}.notif-empty{text-align:center;color:var(--text-muted);padding:24px;font-size:.8em}.notif-item{border-bottom:1px solid var(--border);cursor:pointer;transition:var(--transition);padding:10px 14px}.notif-item:hover{background:var(--bg-card-hover)}.notif-unread{border-left:3px solid var(--accent);background:#3b82f614}.notif-item-title{color:var(--text-primary);font-size:.8em;font-weight:600}.notif-item-body{color:var(--text-muted);margin-top:2px;font-size:.72em}.notif-item-time{color:var(--text-muted);margin-top:4px;font-size:.65em}.today-preview-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.today-preview-modal{background:var(--bg-secondary);border-radius:12px;flex-direction:column;width:90%;max-width:500px;max-height:70vh;display:flex;box-shadow:0 16px 48px #0000004d}.today-preview-header{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding:16px 20px;display:flex}.today-preview-header h3{flex:1;margin:0;font-size:.95em}.today-preview-plan{background:var(--accent);color:#fff;border-radius:10px;padding:2px 8px;font-size:.72em;font-weight:600}.today-preview-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:1.2em}.today-preview-list{flex:1;padding:12px 20px;overflow-y:auto}.today-preview-empty{color:var(--text-muted);text-align:center;padding:20px;font-size:.8em}.today-preview-task{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 0;font-size:.8em;display:flex}.today-preview-done{opacity:.5;text-decoration:line-through}.today-preview-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.today-preview-task-title{flex:1;font-weight:500}.today-preview-task-status{color:var(--text-muted);font-size:.85em}.today-preview-task-dates{color:var(--text-muted);white-space:nowrap;font-size:.8em}.excel-ro-overlay{z-index:1000;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.excel-ro-modal{background:var(--bg-secondary);border-radius:12px;flex-direction:column;width:92vw;max-width:1200px;height:80vh;display:flex;overflow:hidden;box-shadow:0 16px 48px #0006}.excel-ro-modal-header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:14px 20px;display:flex}.excel-ro-modal-header h3{flex:1;margin:0;font-size:.95em}.excel-ro-modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:1.4em}.excel-ro-wrap{flex-direction:column;flex:1;display:flex;overflow:hidden}.excel-ro-plan{color:var(--text-muted);padding:8px 20px;font-size:.75em}.excel-ro-plan strong{color:var(--accent)}.excel-ro-scroll{flex:1;overflow:auto}.excel-ro-left{background:var(--bg-secondary);z-index:2;border-right:1px solid var(--border);position:sticky;left:0}.excel-ro-left-header{color:var(--text-muted);border-bottom:1px solid var(--border);align-items:center;padding:0 8px;font-size:.7em;font-weight:600;display:flex;position:relative}.excel-ro-resize{cursor:col-resize;background:0 0;width:4px;position:absolute;top:0;bottom:0;right:0}.excel-ro-resize:hover{background:var(--accent)}.excel-ro-row{border-bottom:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;align-items:center;padding:0 8px;font-size:.72em;display:flex;overflow:hidden}.excel-ro-group{background:#80808014;font-weight:700}.excel-ro-month{text-align:center;color:var(--text-muted);border-bottom:1px solid var(--border);justify-content:center;align-items:center;font-size:.65em;font-weight:600;display:flex}.excel-ro-day{text-align:center;color:var(--text-muted);border-bottom:1px solid var(--border);justify-content:center;align-items:center;font-size:.6em;display:flex}.excel-ro-today{color:var(--accent);font-weight:700}.excel-ro-weekend{color:#ef4444;opacity:.6}.excel-ro-empty{text-align:center;color:var(--text-muted);padding:40px;font-size:.85em}.excel-ro-fullview{flex-direction:column;height:100%;display:flex;overflow:hidden}.excel-ro-fullview-header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 16px;display:flex}.excel-ro-fullview-header h3{margin:0;font-size:.95em}.pp-phases-grid-bar .pp-phase:first-child{border-radius:10px 0 0 10px}.pp-phases-grid-bar .pp-phase:last-child{border-radius:0 10px 10px 0}.pp-phases-grid-bar .pp-phase:only-child{border-radius:10px}.pp-phases .pp-phase:first-child{border-radius:10px 0 0 10px}.pp-phases .pp-phase:last-child{border-radius:0 10px 10px 0}.pp-phases .pp-phase:only-child{border-radius:10px}
