@font-face{font-family:Nunito Sans;font-style:normal;font-weight:400 800;font-display:swap;src:url(./nunito-sans-latin-D33Im7Cz.woff2) format("woff2")}*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f6f7fb;--surface: #ffffff;--surface-2: #f6f7fb;--hover: #f0f1f8;--active: #ececff;--border: #e6e9ef;--border-soft: #f0f1f6;--input-border: #c9cdd8;--input-bg: #ffffff;--text: #323338;--text-soft: #676879;--text-faint: #9699a6;--primary: #6161ff;--primary-dark: #4b4bdc;--danger: #e2445c;--focus-ring: #c7c7ff;--radius: 10px;--shadow: 0 4px 14px rgba(29, 31, 60, .06);--sidebar-w: 248px}[data-theme=dark]{--bg: #15161c;--surface: #1e2027;--surface-2: #262832;--hover: #2a2c37;--active: #2d2d52;--border: #33353f;--border-soft: #2a2c34;--input-border: #454754;--input-bg: #262832;--text: #e7e8ee;--text-soft: #a4a7b5;--text-faint: #7c7f8e;--primary: #7b7bff;--primary-dark: #6a6ae8;--danger: #ef5e75;--focus-ring: #4646a8;--shadow: 0 4px 14px rgba(0, 0, 0, .35)}body{font-family:Nunito Sans,Segoe UI,Roboto,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:14px}button{font:inherit;cursor:pointer}input,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}input[type=date],input[type=month]{color-scheme:light}[data-theme=dark] input,[data-theme=dark] select{color-scheme:dark}.boot-message{padding:80px;text-align:center;color:var(--text-soft)}.boot-message h2{color:var(--text);margin-bottom:12px}.boot-message p{margin:6px 0 16px}.app{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);padding:18px 12px;display:flex;flex-direction:column;gap:16px;position:sticky;top:0;height:100vh;overflow:hidden;z-index:10}.sidebar-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:16px;margin:0 -4px;padding:0 4px}*{scrollbar-width:thin;scrollbar-color:var(--input-border) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--input-border);border-radius:8px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:content-box}.sidebar-scroll::-webkit-scrollbar{width:5px}.sidebar-scroll{scrollbar-color:transparent transparent}.sidebar-scroll:hover{scrollbar-color:var(--input-border) transparent}.sidebar-scroll::-webkit-scrollbar-thumb{background:transparent}.sidebar-scroll:hover::-webkit-scrollbar-thumb{background:var(--input-border);background-clip:content-box}.main{flex:1;min-width:0}.page{padding:28px 34px 60px;max-width:none}.page.narrow{max-width:620px}.brand{display:flex;align-items:center;gap:10px;padding:2px 8px}.brand-badge{width:38px;height:38px;border-radius:9px;background:linear-gradient(135deg,var(--primary),#9a5cff);color:#fff;font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.brand-img{width:38px;height:38px;border-radius:9px;object-fit:contain;flex-shrink:0}.brand-name{font-weight:700;font-size:15px;line-height:1.2;word-break:break-word}.nav{display:flex;flex-direction:column;gap:2px}.nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--text-soft);font-weight:500}.nav a:hover{background:var(--hover);color:var(--text)}.nav a.active{background:var(--active);color:var(--primary);font-weight:600}.nav-icon{width:22px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.side-projects{border-top:1px solid var(--border);padding-top:14px}.side-projects-title{font-size:11px;font-weight:700;letter-spacing:.8px;color:var(--text-faint);text-transform:uppercase;padding:0 12px 8px}.side-empty{color:var(--text-faint);font-size:13px;padding:4px 12px}.side-project{display:flex;align-items:center;gap:9px;padding:7px 12px;border-radius:8px;color:var(--text-soft)}.side-project:hover{background:var(--hover)}.side-project.active{background:var(--active);color:var(--text);font-weight:600}.side-project-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-foot{border-top:1px solid var(--border);padding-top:12px;flex-shrink:0}.theme-picker{display:flex;gap:10px;flex-wrap:wrap;width:100%}.theme-option{flex:1;min-width:130px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1.5px solid var(--border);background:var(--surface);border-radius:10px;padding:12px 14px;color:var(--text);text-align:left}.theme-option:hover{border-color:var(--input-border);background:var(--hover)}.theme-option.active{border-color:var(--primary);background:var(--active)}.theme-option-icon{font-size:18px}.theme-option small{color:var(--text-faint);font-size:11.5px;font-weight:400}.dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex-shrink:0}.dot.big{width:14px;height:14px;margin-right:4px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{font-size:24px;display:flex;align-items:center;gap:10px}.page-head-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.page-sub{color:var(--text-soft);margin:-14px 0 20px}.muted{color:var(--text-soft)}.muted-role{color:var(--text-soft);font-size:16px;font-weight:400}.spacer{flex:1}.progress-chip{display:flex;align-items:center;gap:8px}.progress-chip .progress{width:90px}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:8px 14px;font-weight:600;font-size:13.5px;transition:background .12s,border-color .12s}.btn:hover{background:var(--hover)}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-dark)}.btn.ghost{border-color:transparent;background:transparent;color:var(--text-soft)}.btn.ghost:hover{background:var(--hover);color:var(--text)}.btn.danger-ghost{border-color:transparent;background:transparent;color:var(--danger)}.btn.danger-ghost:hover{background:#e2445c1f}.btn.small{padding:5px 10px;font-size:12.5px}.btn.tiny{padding:2px 8px;font-size:12px}.icon-btn{border:none;background:transparent;color:var(--text-faint);border-radius:6px;padding:4px 7px;font-size:13px}.icon-btn:hover{background:var(--hover);color:var(--danger)}.icon-btn.small{font-size:11px;padding:3px 6px}.badge{color:#fff;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:20px;white-space:nowrap}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px}.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.card-head h2{font-size:16px}.empty{color:var(--text-faint);padding:10px 0}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px}.stat-tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px}.stat-value{font-size:26px;font-weight:700}.stat-label{color:var(--text-soft);font-size:12.5px;margin-top:4px}.dash-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}@media(max-width:1000px){.dash-columns{grid-template-columns:1fr}}.dash-project{display:flex;align-items:center;gap:10px;padding:9px 4px;border-radius:8px}.dash-project:hover{background:var(--surface-2)}.dash-project-name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-project-hours{color:var(--text-soft);font-size:12.5px;white-space:nowrap}.dash-project .progress{width:110px;flex-shrink:0}.dash-project-pct{color:var(--text-soft);font-size:12.5px;width:44px;text-align:right}.progress{height:7px;background:var(--hover);border-radius:4px;overflow:hidden;flex-shrink:0}.progress-fill{height:100%;border-radius:4px;transition:width .25s}.progress-line{display:flex;align-items:center;gap:10px}.progress-line .progress{flex:1}.progress-pct{font-size:12.5px}.dash-log{display:flex;align-items:center;gap:12px;padding:8px 4px;border-bottom:1px solid var(--border-soft)}.dash-log:last-child{border-bottom:none}.dash-log-date{color:var(--text-soft);font-size:12.5px;width:84px;flex-shrink:0}.dash-log-who{font-weight:600;width:130px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-log-proj{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-soft)}.dash-log-proj.link:hover{color:var(--primary)}.dash-log-hours{font-weight:700}.empty-state{background:var(--surface);border:1px dashed var(--input-border);border-radius:var(--radius);padding:48px;text-align:center}.empty-state h3{margin-bottom:8px}.empty-state p{color:var(--text-soft);margin-bottom:18px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:18px}.project-card{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--primary);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:12px}.project-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.project-card-name{font-size:16.5px;font-weight:700}.project-card-name:hover{color:var(--primary)}.project-card-desc{color:var(--text-soft);font-size:13px}.project-card-stats{display:flex;justify-content:space-between;color:var(--text-soft);font-size:12.5px}.project-card-actions{display:flex;gap:6px;border-top:1px solid var(--border-soft);padding-top:12px}.next-milestone{font-size:12.5px;font-weight:600;color:var(--text-soft);background:var(--surface-2);border-radius:8px;padding:7px 10px}.next-milestone.overdue{color:var(--danger);background:#e2445c1a}.color-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.color-swatch{width:26px;height:26px;border-radius:7px;border:2px solid transparent}.color-swatch.selected{border-color:var(--text);box-shadow:0 0 0 2px var(--surface) inset}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f11238c;display:flex;align-items:flex-start;justify-content:center;padding:40px 20px 20px;z-index:50}.modal{background:var(--surface);border-radius:12px;width:440px;max-width:100%;box-shadow:0 18px 50px #0000004d;max-height:calc(100vh - 70px);display:flex;flex-direction:column}.modal form{display:flex;flex-direction:column;min-height:0;flex:1}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 0;flex-shrink:0}.modal-head h3{font-size:17px}.modal-body{padding:16px 20px;display:flex;flex-direction:column;gap:14px;overflow-y:auto;min-height:0}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px 18px;flex-shrink:0;border-top:1px solid var(--border-soft)}.field{display:flex;flex-direction:column;gap:5px;flex:1;min-width:0}.field>span{font-size:12.5px;font-weight:600;color:var(--text-soft)}.field input,.field select{border:1px solid var(--input-border);border-radius:8px;padding:8px 10px;background:var(--input-bg);width:100%;min-width:0;max-width:100%}.field input:focus,.field select:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.field-row{display:flex;gap:12px}.field-row .field{min-width:0}.form-hint{color:var(--text-faint);font-size:12px}.form-hint.warn{color:#b57700;background:#fdab3d26;padding:8px 10px;border-radius:8px}.pinned-task{background:var(--surface-2);border-radius:8px;padding:8px 10px;font-weight:600}.pw-wrap{position:relative;width:100%}.pw-wrap input{width:100%;border:1px solid var(--input-border);border-radius:8px;padding:8px 40px 8px 10px;background:var(--input-bg)}.pw-wrap input:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:var(--text-faint);padding:5px;border-radius:6px;display:inline-flex;align-items:center}.pw-eye:hover{color:var(--text);background:var(--hover)}.confirm-overlay{align-items:center;padding:20px;z-index:120}.confirm-box{background:var(--surface);border-radius:14px;width:380px;max-width:100%;box-shadow:0 18px 50px #0000004d;padding:24px;text-align:center;animation:confirm-in .14s ease-out}@keyframes confirm-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.confirm-icon{font-size:30px;margin-bottom:8px}.confirm-box h3{font-size:16.5px;margin-bottom:6px}.confirm-msg{color:var(--text-soft);font-size:13.5px;line-height:1.5;word-break:break-word}.confirm-actions{display:flex;justify-content:center;gap:10px;margin-top:18px}.btn.danger-solid{background:var(--danger);border-color:var(--danger);color:#fff}.btn.danger-solid:hover{background:#c93750}.duration-wrap{position:relative;width:100%}.duration-wrap input{width:100%;border:1px solid var(--input-border);border-radius:8px;padding:8px 76px 8px 10px;background:var(--input-bg)}.duration-wrap input:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.duration-wrap input.duration-invalid{border-color:var(--danger)}.duration-hint{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:11.5px;font-weight:700;color:var(--text-faint);pointer-events:none;font-variant-numeric:tabular-nums}.duration-hint.bad{color:var(--danger)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#323338;color:#fff;font-weight:600;padding:11px 22px;border-radius:10px;box-shadow:0 8px 24px #00000040;z-index:100;animation:toast-in .18s ease-out}.toast.error{background:var(--danger)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.tabs{display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--border);margin-bottom:20px}.tab{border:none;background:transparent;padding:9px 16px;font-weight:600;color:var(--text-soft);border-bottom:2.5px solid transparent;margin-bottom:-1px}.tab:hover{color:var(--text)}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.sprint-filter{margin-left:auto;border:1px solid var(--input-border);border-radius:8px;padding:6px 10px;background:var(--input-bg);margin-bottom:6px}.tab-badge{display:inline-flex;align-items:center;justify-content:center;background:var(--danger);color:#fff;font-size:10.5px;font-weight:800;min-width:17px;height:17px;border-radius:9px;padding:0 5px;margin-left:6px}.tab-toolbar{margin-bottom:16px}.task-group{margin-bottom:26px}.task-group-head{display:flex;align-items:center;gap:8px;font-weight:700;font-size:15px;margin-bottom:8px}.group-count{color:var(--text-faint);font-weight:500;font-size:13px}.task-table-head,.task-row{display:grid;grid-template-columns:52px minmax(200px,1fr) 120px 126px 126px 106px 62px 128px 30px;gap:7px;align-items:center}.task-table-head{padding:4px 10px;font-size:11.5px;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.4px}.task-row{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 10px;margin-bottom:6px}.task-row:hover{box-shadow:var(--shadow)}.expander{border:none;background:transparent;color:var(--text-faint);display:flex;align-items:center;gap:3px;border-radius:6px;padding:4px;font-size:12px}.expander:hover{background:var(--hover);color:var(--text)}.expander.open{color:var(--primary)}.expander svg{transition:transform .15s;flex-shrink:0}.expander.open svg{transform:rotate(90deg)}.sub-count{font-size:11px;font-weight:700}.inline-edit{border:1px solid transparent;background:transparent;border-radius:6px;padding:5px 7px;width:100%;font-weight:600}.inline-edit:hover{border-color:var(--input-border)}.inline-edit:focus{outline:none;border-color:var(--primary);background:var(--input-bg)}.cell-select,.cell-date{border:1px solid transparent;background:transparent;border-radius:6px;padding:5px 4px;width:100%;color:var(--text-soft);font-size:13px}.cell-select:hover,.cell-date:hover{border-color:var(--input-border);background:var(--input-bg)}.cell-select:focus,.cell-date:focus{outline:none;border-color:var(--primary);background:var(--input-bg)}.pill-select{border:none;border-radius:6px;padding:6px;font-weight:600;font-size:12.5px;width:100%;text-align:center;-moz-appearance:none;appearance:none;-webkit-appearance:none;text-align-last:center}.pill-select option{background:var(--surface);color:var(--text)}.cell-hours{border:none;background:var(--surface-2);border-radius:6px;padding:6px 4px;font-size:12px;font-weight:600;color:var(--text-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cell-hours:hover{background:var(--active);color:var(--primary)}.task-add input,.subtask-add input{width:100%;border:1px dashed var(--input-border);background:transparent;border-radius:8px;padding:8px 12px;color:var(--text)}.task-add input:focus,.subtask-add input:focus{outline:none;border-color:var(--primary);background:var(--input-bg);border-style:solid}.subtask-box{margin:-2px 0 8px 40px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:8px 12px}.subtask-row{display:flex;align-items:center;gap:10px;padding:4px 0}.subtask-row input[type=checkbox]{width:16px;height:16px;accent-color:#00c875;flex-shrink:0}.subtask-row .inline-edit{font-weight:500}.subtask-hours{font-size:12px;color:var(--text-soft);white-space:nowrap}.subtask-add{margin-top:6px}.milestone-add{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}.milestone-add input{border:1px solid var(--input-border);border-radius:8px;padding:8px 12px;background:var(--input-bg)}.milestone-add input:first-child{flex:1;min-width:220px}.milestone-add input:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.milestone-row{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:8px 12px;margin-bottom:6px}.milestone-row input[type=checkbox]{width:16px;height:16px;accent-color:#00c875;flex-shrink:0}.milestone-flag{font-size:15px;flex-shrink:0}.milestone-date{max-width:150px}.milestone-date.overdue{color:var(--danger);font-weight:700}.overdue-tag{background:#e2445c1f;color:var(--danger);font-size:11px;font-weight:700;padding:3px 8px;border-radius:20px}.sprint-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;margin-bottom:14px}.sprint-card-top{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.sprint-dates{color:var(--text-soft);font-size:13px}.sprint-card-stats{display:flex;justify-content:space-between;color:var(--text-soft);font-size:12.5px;margin-top:10px}.archived-sprints{margin-top:20px}.archived-sprints>.btn{margin-bottom:10px}.sprint-card.archived{opacity:.72;padding:10px 18px}.sprint-card.archived .sprint-card-top{margin-bottom:0}.resource-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}.resource-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.avatar{width:52px;height:52px;border-radius:50%;color:#fff;font-weight:700;font-size:18px;display:flex;align-items:center;justify-content:center}.avatar.inline{width:34px;height:34px;font-size:13px}.resource-name{font-size:16px;font-weight:700}.resource-name:hover{color:var(--primary)}.resource-role{color:var(--text-soft);font-size:13px}.resource-stats{display:flex;gap:22px;margin:4px 0}.resource-stats div{display:flex;flex-direction:column}.resource-stats span{color:var(--text-faint);font-size:11.5px}.week-chart{position:relative;display:flex;gap:6px;align-items:flex-end;width:100%;max-width:200px;margin:6px 0 2px;padding:0 2px}.week-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}.week-track{height:56px;width:100%;display:flex;align-items:flex-end;justify-content:center;background:var(--surface-2);border-radius:5px}.week-bar{width:100%;min-height:0;border-radius:4px 4px 0 0;transition:height .25s}.week-label{font-size:10px;color:var(--text-faint);font-weight:600}.week-capacity{position:absolute;left:0;right:0;height:0;border-top:2px dashed var(--text-faint);opacity:.55;margin-bottom:18px;pointer-events:none}.util-badge{font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:20px}.util-badge.ok{background:#00c87526;color:#00915a}.util-badge.busy{background:#fdab3d2e;color:#b57700}.util-badge.over{background:#e2445c26;color:var(--danger)}[data-theme=dark] .util-badge.ok{color:#35d99a}[data-theme=dark] .util-badge.busy{color:#ffc16b}.filter-bar{display:flex;align-items:center;gap:18px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 18px;margin-bottom:18px}.filter-bar label{display:flex;align-items:center;gap:8px;color:var(--text-soft);font-weight:600;font-size:13px}.filter-bar input,.filter-bar select{border:1px solid var(--input-border);border-radius:8px;padding:6px 10px;background:var(--input-bg)}.filter-total{color:var(--text-soft)}.filter-total strong{color:var(--text)}.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--text-faint);padding:8px 10px;border-bottom:1px solid var(--border)}.table td{padding:9px 10px;border-bottom:1px solid var(--border-soft)}.table tr:last-child td{border-bottom:none}.table .num{text-align:right}.log-task{color:var(--text-faint)}.log-note{color:var(--text-faint);font-style:italic}.log-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border-soft)}.log-row:last-child{border-bottom:none}.log-date{color:var(--text-soft);font-size:12.5px;width:84px;flex-shrink:0}.log-detail{flex:1;min-width:0}.log-hours{font-weight:700;white-space:nowrap}.settings-card{margin-bottom:18px;display:flex;flex-direction:column;gap:14px;align-items:flex-start}.settings-card h2{font-size:16px}.settings-card .field{width:100%}.logo-preview{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:16px}.logo-preview img{max-height:90px;max-width:260px;display:block}.logo-actions{display:flex;gap:10px}.collapse-btn{position:fixed;top:50%;left:calc(var(--sidebar-w) - 13px);transform:translateY(-50%);width:26px;height:26px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text-faint);display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0000001f;cursor:pointer;padding:0}.collapse-btn:hover{background:var(--hover);color:var(--text);border-color:var(--primary)}.collapse-btn svg{transform:rotate(180deg);transition:transform .18s ease}.sidebar.collapsed .collapse-btn svg{transform:none}.sidebar.collapsed .collapse-btn{left:61px}.sidebar.collapsed{width:74px;min-width:74px;padding:18px 10px}.sidebar.collapsed .brand{flex-direction:column;gap:8px;padding:0}.sidebar.collapsed .nav a{justify-content:center;padding:10px 0}.sidebar.collapsed .nav-icon{width:auto}.sidebar.collapsed .side-project{justify-content:center;padding:9px 0}.play-btn{border:none;background:var(--surface-2);color:#00915a;border-radius:6px;width:26px;height:26px;font-size:11px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.play-btn:hover{background:#00c8752e}.play-btn.small{width:22px;height:22px;font-size:9px}[data-theme=dark] .play-btn{color:#35d99a}.cell-time{display:flex;align-items:center;gap:5px;min-width:0}.cell-time .cell-hours{flex:1;min-width:0}.floating-timer{position:fixed;bottom:22px;right:22px;z-index:90;display:flex;align-items:center;gap:14px;background:#23243a;color:#fff;border-radius:14px;padding:12px 16px;box-shadow:0 10px 32px #00000059}.timer-pulse{width:10px;height:10px;border-radius:50%;background:#00c875;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.timer-info{display:flex;flex-direction:column;line-height:1.25}.timer-info strong{font-size:17px;font-variant-numeric:tabular-nums}.timer-target{font-size:12px;color:#aeb0c5;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timer-stop{background:var(--danger);border-color:var(--danger);color:#fff}.timer-stop:hover{background:#c93750}.timeline-card{margin-bottom:18px;overflow-x:auto}.timeline{position:relative;min-width:520px;padding:26px 0 6px}.timeline-tick{position:absolute;top:22px;bottom:0;width:0;border-left:1px solid var(--border)}.timeline-tick-label{position:absolute;top:-20px;left:-2px;transform:translate(-50%);font-size:10.5px;color:var(--text-faint);font-weight:700;white-space:nowrap}.timeline-today{position:absolute;top:2px;bottom:0;width:0;border-left:2px dashed var(--danger);z-index:2}.timeline-today-label{position:absolute;top:-2px;left:4px;font-size:10px;font-weight:800;color:var(--danger);white-space:nowrap}.timeline-row{position:relative;height:34px;margin:6px 0}.timeline-bar{position:absolute;top:3px;height:28px;border-radius:7px;display:flex;align-items:center;padding:0 10px;color:#fff;overflow:hidden;min-width:24px}.timeline-bar-label{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timeline-end-label{position:absolute;top:50%;transform:translateY(-50%);font-size:11px;font-weight:700;color:var(--text-soft);white-space:nowrap}.timeline-end-label.urgent{color:var(--danger)}.tab-tools{margin-left:auto;display:flex;align-items:center;gap:10px;margin-bottom:6px}.task-search{border:1px solid var(--input-border);border-radius:8px;padding:6px 12px;background:var(--input-bg);width:200px}.task-search:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.cell-date.overdue{color:var(--danger);font-weight:700}.overdue-card{border-left:4px solid var(--danger);margin-bottom:18px}.overdue-date{color:var(--danger);font-weight:700}.export-types{display:flex;flex-direction:column;gap:8px;margin-top:4px}.export-type{display:flex;flex-direction:column;gap:3px;text-align:left;border:1.5px solid var(--border);background:var(--surface);border-radius:10px;padding:12px 14px;color:var(--text)}.export-type span{color:var(--text-soft);font-size:12.5px;font-weight:400}.export-type:hover{border-color:var(--input-border)}.export-type.active{border-color:var(--primary);background:var(--active)}.range-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.row-lead{display:flex;align-items:center;gap:2px}.drag-handle{cursor:grab;color:var(--text-faint);font-size:13px;padding:3px 2px;border-radius:4px;-webkit-user-select:none;user-select:none;flex-shrink:0;line-height:1}.drag-handle:hover{color:var(--text);background:var(--hover)}.drag-handle:active{cursor:grabbing}.cell-est{border:1px solid transparent;background:var(--surface-2);border-radius:6px;padding:5px 4px;width:100%;color:var(--text-soft);font-size:12.5px;text-align:center}.cell-est:hover{border-color:var(--input-border)}.cell-est:focus{outline:none;border-color:var(--primary);background:var(--input-bg)}.cell-est::-webkit-outer-spin-button,.cell-est::-webkit-inner-spin-button{-webkit-appearance:none}input.duration-invalid,input.duration-invalid:focus,.cell-est.duration-invalid,.cell-est.duration-invalid:focus{border-color:var(--danger)!important;background:#e2445c12}@keyframes est-shake{25%{transform:translate(-3px)}75%{transform:translate(3px)}}input.est-shake{animation:est-shake .16s ease 2}.cell-hours.over{background:#e2445c24;color:var(--danger);font-weight:700}.kanban{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;align-items:start}@media(max-width:1100px){.kanban{grid-template-columns:repeat(2,1fr)}}.kanban-col{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:10px;min-height:200px}.kanban-col-head{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13.5px;background:var(--surface);border:1px solid var(--border);border-top:3px solid;border-radius:8px;padding:8px 12px;margin-bottom:10px}.kanban-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:11px 12px;margin-bottom:8px;cursor:grab;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px}.kanban-card:active{cursor:grabbing}.kanban-card-name{font-weight:700;font-size:13.5px;line-height:1.3;background:transparent;border:none;color:var(--text);font-family:inherit;text-align:left;padding:0;width:100%;cursor:pointer;word-break:break-word}.kanban-card-name:hover{color:var(--primary)}.kanban-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kanban-due{font-size:11.5px;color:var(--text-soft)}.kanban-subs{font-size:11.5px;color:var(--text-faint)}.kanban-card-foot{display:flex;align-items:center;gap:6px}.kanban-unassigned{font-size:11px;color:var(--text-faint)}.kanban-hours{border:none;background:var(--surface-2);border-radius:6px;padding:4px 8px;font-size:11.5px;font-weight:600;color:var(--text-soft)}.kanban-hours:hover{background:var(--active);color:var(--primary)}.kanban-hours.over{background:#e2445c24;color:var(--danger)}.kanban-add{width:100%;border:1px dashed var(--input-border);background:transparent;border-radius:8px;padding:7px 10px;color:var(--text);font-size:13px}.kanban-add:focus{outline:none;border-color:var(--primary);background:var(--input-bg);border-style:solid}.hbar-row{display:flex;align-items:center;gap:10px;padding:5px 0}.hbar-label{width:150px;flex-shrink:0;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar-track{flex:1;height:14px;background:var(--hover);border-radius:5px;position:relative;overflow:hidden}.hbar-track.big{height:18px}.hbar-ref{position:absolute;inset:0 auto 0 0;background:var(--input-border);opacity:.55;border-radius:5px}.hbar-fill{position:absolute;inset:0 auto 0 0;border-radius:5px;transition:width .25s}.hbar-fill.est{background:var(--input-border)}.hbar-value{width:110px;flex-shrink:0;text-align:right;font-size:12px;color:var(--text-soft);font-variant-numeric:tabular-nums}.chart-note{color:var(--text-faint);font-size:11.5px;margin-top:10px}.logged-breakdown{color:var(--text-soft);font-size:13px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 16px;margin:-8px 0 18px}.status-stack{display:flex;height:16px;border-radius:6px;overflow:hidden;gap:2px}.status-stack-seg{min-width:6px}.status-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px}.status-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-soft)}.myweek-card{margin-bottom:18px}.myweek-chart{position:relative;display:flex;gap:10px;align-items:flex-end;padding:4px 2px 0;max-width:640px}.myweek-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;border:none;background:transparent;padding:0;border-radius:8px}.myweek-col:hover .myweek-track{outline:2px solid var(--focus-ring)}.day-nav{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.day-log-row{align-items:center}.day-log-what{min-width:0}.myweek-value{font-size:11.5px;font-weight:700;color:var(--text-soft);min-height:15px;font-variant-numeric:tabular-nums}.myweek-value.over{color:var(--danger)}.myweek-track{height:92px;width:100%;max-width:56px;display:flex;align-items:flex-end;justify-content:center;background:var(--surface-2);border-radius:7px;position:relative}.myweek-track.weekend{opacity:.45}.cap-tick{position:absolute;left:4px;right:4px;height:0;border-top:2px dashed var(--text-faint);opacity:.6;pointer-events:none}.myweek-bar{width:100%;border-radius:6px 6px 0 0;transition:height .25s}.week-label.today{color:var(--primary);font-weight:800}.myweek-note{margin-top:12px;color:var(--text-soft);font-size:13px}.week-nav{display:flex;align-items:center;gap:14px;margin-bottom:16px;flex-wrap:wrap}.insight-row{margin-bottom:12px;display:flex;align-items:center;gap:22px;flex-wrap:wrap}.insight-user{display:flex;align-items:center;gap:10px;width:230px;flex-shrink:0}.insight-name{font-weight:700}.insight-name:hover{color:var(--primary)}.insight-util{flex:1;min-width:220px;display:flex;align-items:center;gap:10px}.insight-days{max-width:190px;margin:0}.project-insight{align-items:flex-start}.dual-bars{flex:1;min-width:260px;display:flex;flex-direction:column;gap:6px}.dual-bar-row{display:flex;align-items:center;gap:10px}.dual-label{width:70px;flex-shrink:0;font-size:11.5px;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.3px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:20px}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:38px 34px;width:380px;max-width:100%;display:flex;flex-direction:column;gap:14px}.login-logo{max-height:64px;max-width:240px;object-fit:contain;align-self:center;margin-bottom:6px}.login-card h1{font-size:24px;text-align:center}.login-sub{text-align:center;color:var(--text-soft);margin-top:-10px}.login-error{background:#e2445c1f;color:var(--danger);border-radius:8px;padding:9px 12px;font-weight:600;font-size:13px}.login-btn{justify-content:center;padding:11px;font-size:15px}.login-or{display:flex;align-items:center;gap:10px;color:var(--text-soft);font-size:12px;font-weight:600;text-transform:uppercase}.login-or:before,.login-or:after{content:"";flex:1;height:1px;background:var(--border)}.ms-btn{display:flex;align-items:center;gap:9px;font-weight:600}.ms-btn svg{flex-shrink:0}.brand-logo-full{max-width:calc(100% - 34px);max-height:72px;object-fit:contain;object-position:left center}.greet-head h1,.greet-emoji{font-size:26px}.greet-sub{color:var(--text-soft);margin-top:5px;font-size:14px}.live-clock{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:12px 22px}.live-clock-time{font-family:Consolas,Cascadia Mono,Segoe UI Mono,monospace;font-size:32px;font-weight:700;letter-spacing:2px;font-variant-numeric:tabular-nums;color:var(--text);line-height:1}.clock-colon{color:var(--text-faint);animation:colon-blink 2s step-start infinite}@keyframes colon-blink{50%{opacity:.35}}.clock-sec{color:var(--primary)}.logo-slots{display:grid;grid-template-columns:1fr 1fr;gap:14px;width:100%}@media(max-width:640px){.logo-slots{grid-template-columns:1fr}}.logo-slot{border:1px solid var(--border);border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}.logo-slot .logo-preview{width:100%;display:flex;align-items:center;justify-content:center;min-height:84px}.logo-slot.dark .logo-preview{background:#16171d;border-color:#33353f}.logo-slot .logo-preview img{max-height:60px;max-width:100%}.logo-none{color:var(--text-faint);font-size:12.5px}.user-chip{display:flex;align-items:center;gap:9px;padding:8px 6px;margin-bottom:8px;border-radius:8px}.user-chip-info{display:flex;flex-direction:column;line-height:1.2;flex:1;min-width:0}.user-chip-info strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-chip-info small{color:var(--text-faint);font-size:11px}.signout-btn{border:1px solid var(--border);background:var(--surface-2);color:var(--text-soft);border-radius:8px;width:34px;height:34px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.signout-btn:hover{background:#e2445c1f;border-color:var(--danger);color:var(--danger)}.avatar.tiny{width:28px;height:28px;font-size:11px;flex-shrink:0;border-radius:50%;color:#fff;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.board-head{flex-wrap:nowrap;gap:12px}.board-title{flex:1;min-width:0;display:flex;align-items:center;gap:8px}.proj-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:60px}.board-actions{flex-shrink:0;flex-wrap:nowrap}.board-actions .btn,.logged-chip{white-space:nowrap}@media(max-width:1220px){.logged-chip{display:none}}@media(max-width:1100px){.board-head .progress-chip{display:none}}.collab-avatars{display:inline-flex;align-items:center;margin-left:6px;flex-shrink:0}.avatar.tiny.stacked{margin-left:-8px;border:2px solid var(--bg)}.avatar.tiny.stacked:first-child{margin-left:0}.avatar.tiny.stacked.more{background:var(--text-faint);font-size:10px}.collab-btn{margin-left:6px;font-weight:600;white-space:nowrap;flex-shrink:0}.collab-list{display:flex;flex-direction:column;gap:4px;max-height:240px;overflow-y:auto}.collab-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;cursor:pointer}.collab-row:hover{background:var(--hover)}.collab-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary)}.collab-name{font-weight:600;flex:1}.collab-role{font-size:12px}.you-tag{color:var(--text-faint);font-weight:400;font-size:13px}.role-tag{font-size:11.5px;font-weight:700;color:var(--text-faint)}.role-tag.admin{color:var(--primary)}.resource-email{color:var(--text-faint);font-size:12px}.assigned-projects{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.assigned-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:20px;padding:3px 10px;font-size:11.5px;font-weight:600;color:var(--text-soft)}.assigned-chip:hover{background:var(--hover);color:var(--text)}.more-chip{cursor:pointer;border-style:dashed;color:var(--text-faint);background:transparent;font:inherit;font-size:11.5px;font-weight:600}.more-chip:hover{color:var(--primary);border-color:var(--primary)}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f112361;z-index:45}.drawer{position:fixed;top:0;right:0;bottom:0;width:600px;max-width:94vw;background:var(--surface);border-left:1px solid var(--border);box-shadow:-14px 0 44px #00000047;display:flex;flex-direction:column;animation:drawer-in .18s ease-out;z-index:46}@keyframes drawer-in{0%{transform:translate(48px);opacity:.4}to{transform:none;opacity:1}}.drawer-head{display:flex;align-items:center;gap:10px;padding:13px 18px;border-bottom:1px solid var(--border-soft);flex-shrink:0}.drawer-project{font-size:12.5px;font-weight:700;color:var(--text-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer-body{flex:1;overflow-y:auto;padding:16px 18px 48px;display:flex;flex-direction:column;gap:18px}.drawer-title{font-size:18px;font-weight:800;line-height:1.35;width:100%;resize:none;overflow:hidden;flex-shrink:0;border:1px solid transparent;border-radius:6px;padding:5px 7px;background:transparent;color:var(--text);font-family:inherit}.drawer-body>*{flex-shrink:0}.drawer-title:hover{border-color:var(--input-border)}.drawer-title:focus{outline:none;border-color:var(--primary);background:var(--input-bg)}.drawer-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.drawer-grid-full{grid-column:1 / -1}.drawer-section{border-top:1px solid var(--border-soft);padding-top:12px}.drawer-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.drawer-section-head h4{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint)}.drawer-sub .inline-edit{flex:1;min-width:0}.task-title-btn{border:none;background:transparent;color:var(--text);font:inherit;font-weight:600;text-align:left;cursor:pointer;padding:5px 7px;border-radius:6px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-title-btn:hover{color:var(--primary);background:var(--hover)}.task-title-btn.done{text-decoration:line-through;color:var(--text-faint)}.modal.wide{width:620px}.detail-title{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.detail-name{font-size:17px;font-weight:700}.detail-body{max-height:72vh;overflow-y:auto}.detail-desc{border:1px solid var(--input-border);border-radius:8px;padding:9px 11px;background:var(--input-bg);font:inherit;color:inherit;resize:vertical;width:100%}.detail-desc:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.cell-name{display:flex;align-items:center;gap:2px;min-width:0}.title-stack{display:flex;flex-direction:column;align-items:flex-start;flex:1;min-width:0}.title-stack .task-title-btn{width:100%;flex:none;padding-bottom:2px}.subs-progress{width:calc(100% - 14px);max-width:220px;height:3px;margin:0 0 3px 7px;background:var(--border);border-radius:2px;overflow:hidden;flex-shrink:0}.subs-progress-fill{height:100%;background:var(--primary);border-radius:2px;transition:width .2s}.open-btn{border:none;background:transparent;color:var(--text-faint);border-radius:6px;padding:3px 6px;font-size:13px;flex-shrink:0}.open-btn:hover{background:var(--hover);color:var(--primary)}.attach-row{display:flex;align-items:center;gap:10px;padding:5px 0}.attach-link{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.attach-link:hover{color:var(--primary)}.attach-btn{align-self:flex-start;margin-top:4px}.comment-row{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--border-soft)}.comment-row:last-of-type{border-bottom:none}.comment-main{flex:1;min-width:0}.comment-meta{display:flex;align-items:center;gap:10px;font-size:12px}.comment-body{margin-top:3px;white-space:pre-wrap;word-break:break-word}.comment-add{display:flex;gap:8px;margin-top:8px}.comment-add input{flex:1;border:1px solid var(--input-border);border-radius:8px;padding:8px 11px;background:var(--input-bg)}.comment-add input:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.activity-list{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow-y:auto}.activity-row{display:flex;align-items:baseline;gap:8px;font-size:12.5px;padding:3px 0}.activity-dot{width:6px;height:6px;border-radius:50%;background:var(--input-border);flex-shrink:0;align-self:center}.activity-row em{color:var(--text-soft);font-style:normal}.activity-time{margin-left:auto;font-size:11px;white-space:nowrap}.bell-btn{position:relative;width:100%;display:flex;align-items:center;gap:10px;border:1px solid var(--border);background:transparent;color:var(--text-soft);border-radius:8px;padding:8px 12px;font-weight:600;margin-bottom:8px}.bell-btn:hover,.bell-btn.active{background:var(--hover);color:var(--text)}.bell-badge{position:absolute;top:-6px;right:-6px;background:var(--danger);color:#fff;font-size:10.5px;font-weight:800;min-width:18px;height:18px;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0 5px}.notif-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60}.notif-panel{position:fixed;left:260px;bottom:24px;z-index:61;width:380px;max-width:calc(100vw - 280px);max-height:70vh;overflow-y:auto;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 50px #0000004d;padding:14px}.sidebar.collapsed .notif-panel{left:90px}.notif-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.notif-head strong{flex:1}.notif-section-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);margin:10px 0 4px}.notif-item{display:flex;gap:10px;width:100%;text-align:left;border:none;background:transparent;color:var(--text);padding:8px;border-radius:8px;align-items:flex-start}.notif-item:hover{background:var(--hover)}.notif-item.unread{background:var(--active)}.notif-item.unread:hover{background:var(--active);filter:brightness(1.05)}.notif-msg{flex:1;font-size:13px;line-height:1.35}.notif-msg small{display:block;color:var(--text-faint);margin-top:2px}.search-overlay{align-items:flex-start;padding-top:12vh}.search-box{width:560px;max-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 18px 50px #0000004d;padding:12px}.search-input{width:100%;border:1px solid var(--input-border);border-radius:10px;padding:12px 14px;font-size:15px;background:var(--input-bg);color:inherit}.search-input:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.search-result{display:flex;align-items:center;gap:10px;width:100%;border:none;background:transparent;color:var(--text);padding:9px 10px;border-radius:8px;text-align:left;margin-top:2px}.search-result:hover{background:var(--hover)}.search-label{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-label small{color:var(--text-faint);font-weight:400}.search-kind{font-size:11px;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.4px}.search-hint{color:var(--text-faint);font-size:11.5px;padding:10px 10px 2px}.search-empty{padding:12px 10px}.cal-label{min-width:150px;text-align:center}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-dow{text-align:center;font-size:11.5px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);padding:4px 0}.cal-cell{background:var(--surface);border:1px solid var(--border);border-radius:10px;min-height:96px;padding:6px;display:flex;flex-direction:column;gap:3px;overflow:hidden}.cal-cell.empty{background:transparent;border-color:transparent}.cal-cell.today{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.cal-daynum{font-size:12px;font-weight:700;color:var(--text-faint)}.cal-cell.today .cal-daynum{color:var(--primary)}.cal-item{display:flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;border-radius:5px;padding:2px 5px;background:var(--surface-2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cal-item:hover{background:var(--hover)}.cal-item.overdue{color:var(--danger)}.cal-item.milestone{background:transparent;font-weight:700}.cal-item.leave{align-self:flex-start}.gantt{display:grid;grid-template-columns:180px 1fr;gap:0}.gantt-labels{display:flex;flex-direction:column}.gantt-axis-spacer{height:26px}.gantt-label{height:36px;display:flex;align-items:center;border:none;background:transparent;color:var(--text);font-size:12.5px;font-weight:600;text-align:left;padding:0 8px 0 0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.gantt-label:hover{color:var(--primary)}.gantt-chart{position:relative;min-width:420px}.gantt-rows{position:absolute;left:0;right:0}.gantt-arrows{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}.gantt-bar{cursor:pointer;z-index:1}.timeline-card .gantt{overflow-x:auto}.brand-swatches{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.brand-swatch{display:inline-flex;align-items:center;gap:8px;border:2px solid var(--border);background:var(--surface-2);border-radius:10px;padding:8px 12px;font-weight:600;font-size:13px;color:var(--text)}.brand-swatch:hover{border-color:var(--text-faint)}.brand-swatch.selected{border-color:var(--primary);background:var(--active)}.brand-dot{width:16px;height:16px;border-radius:50%;flex-shrink:0}.brand-custom{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-soft)}.brand-custom input[type=color]{width:34px;height:26px;border:1px solid var(--input-border);border-radius:6px;padding:1px;background:var(--input-bg);cursor:pointer}.brand-custom code{font-size:12px}.view-toggle{display:flex;gap:4px;margin-right:8px}.preset-row{display:flex;gap:6px;margin-top:6px}.repeat-last{display:block;width:100%;text-align:left;border:1px dashed var(--border);background:var(--surface-2, var(--hover));color:var(--text-soft);border-radius:8px;padding:9px 12px;font-size:13px;margin-bottom:14px;cursor:pointer}.repeat-last:hover{border-color:var(--primary);color:var(--text)}.repeat-last strong{color:var(--text)}.lock-banner{background:#fdab3d24;border:1px solid rgba(253,171,61,.5);color:var(--text);border-radius:10px;padding:10px 14px;font-weight:600;font-size:13.5px;margin-bottom:14px}.week-grid-card{overflow-x:auto}.wk-nav{display:flex;align-items:center;gap:10px;margin-bottom:14px}.wk-legend{color:var(--text-soft);font-size:12px;white-space:nowrap}.wk-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;vertical-align:-1px}.wk-legend i.ok{background:#00c875}.wk-legend i.part{background:#fdab3d}.wk-legend i.miss{background:#e2445c}.wk-legend i.off{background:var(--border)}.wk-table{min-width:720px}.wk-row{display:grid;grid-template-columns:150px repeat(7,1fr) 86px;gap:4px;margin-bottom:4px;align-items:stretch}.wk-name{font-weight:600;font-size:13px;display:flex;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wk-cell{min-height:34px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;background:var(--surface-2, var(--hover))}.wk-cell.head{background:transparent;color:var(--text-soft);flex-direction:column;gap:0;min-height:auto;font-weight:700}.wk-cell.head small{font-weight:600;color:var(--text-faint)}.wk-cell.head.today{color:var(--primary)}.wk-cell.ok{background:#00c8752e;color:#00a05e}.wk-cell.part{background:#fdab3d33;color:#c77900}.wk-cell.miss{background:#e2445c24;color:var(--danger)}.wk-cell.off,.wk-cell.future{background:var(--hover);opacity:.55}.wk-cell.total{background:transparent;border:1px solid var(--border)}[data-theme=dark] .wk-cell.ok{color:#2fd58c}[data-theme=dark] .wk-cell.part{color:#ffbe55}.repeat-row{display:flex;align-items:flex-start;gap:10px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;cursor:pointer;font-size:12.5px}.repeat-row input[type=checkbox]{width:16px;height:16px;margin-top:2px;accent-color:var(--primary)}.holiday-row.past{opacity:.5}.holiday-emoji{font-size:16px}.holiday-name{min-width:140px}.cal-cell.holiday{background:#a25ddc12}.cal-item.holiday-item{background:#a25ddc29;color:#a25ddc;font-weight:700}[data-theme=dark] .cal-item.holiday-item{color:#c79bf0}.my-action-card{border-left-color:var(--primary)}.done-btn{color:#00915a;border-color:#00c87566}.done-btn:hover{background:#00c87524}[data-theme=dark] .done-btn{color:#35d99a}.stage-row{display:flex;align-items:center;gap:8px}.stage-color{width:34px;height:32px;padding:2px;border:1px solid var(--input-border);border-radius:8px;background:var(--input-bg);cursor:pointer;flex-shrink:0}.stage-label{flex:1;border:1px solid var(--input-border);border-radius:8px;padding:7px 10px;background:var(--input-bg);min-width:0}.stage-label:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.stage-lock{font-size:11px;font-weight:700;color:#00915a;white-space:nowrap}[data-theme=dark] .stage-lock{color:#35d99a}.stage-row .icon-btn:disabled{opacity:.3;cursor:not-allowed}.stage-row .icon-btn:disabled:hover{background:transparent;color:var(--text-faint)}.subtask-est-wrap{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text-faint);flex-shrink:0}.subtask-est-wrap .cell-est{width:56px}.est-rolled .cell-est::placeholder{color:var(--primary);font-weight:700;opacity:.9}.tpl-card{margin-bottom:12px}.tpl-card-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tpl-preview{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.tpl-chip{background:var(--surface-2);border:1px solid var(--border);border-radius:20px;padding:3px 11px;font-size:12px;font-weight:600;color:var(--text-soft)}.tpl-chip.more{color:var(--text-faint);border-style:dashed}.page.tpl-wide{max-width:980px}.tpl-editor{width:100%}.tpl-task{width:100%;border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--surface-2)}.tpl-task-row{display:grid;grid-template-columns:20px minmax(200px,1fr) 150px 130px 105px 70px 28px;gap:8px;align-items:center}.tpl-owner{border:1px solid var(--input-border);border-radius:8px;padding:7px 8px;background:var(--input-bg);color:inherit;min-width:0}.tpl-owner:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}@media(max-width:900px){.tpl-task-row{grid-template-columns:1fr 1fr}.tpl-task-row .icon-btn{justify-self:end}}.tpl-task-name{border:1px solid var(--input-border);border-radius:8px;padding:7px 10px;background:var(--input-bg);min-width:0}.tpl-task-name:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.tpl-est{width:100%;background:var(--input-bg);border:1px solid var(--input-border)}.tpl-sub-row{display:grid;grid-template-columns:20px 20px 1fr 70px 28px;gap:8px;align-items:center;margin-top:6px;padding-left:8px}.tpl-sub-row input:not(.cell-est){border:1px solid var(--input-border);border-radius:8px;padding:6px 10px;background:var(--input-bg);min-width:0}.tpl-sub-tick{color:var(--text-faint);text-align:center}.tpl-add-sub{margin-top:8px}.tpl-actions{display:flex;align-items:center;gap:8px;width:100%}.mytask-head,.task-row.mytask-row{display:grid;grid-template-columns:52px minmax(140px,1fr) 120px 96px 104px 126px 60px 120px 100px 30px;gap:7px;align-items:center}.tag-chip{flex-shrink:0;font-size:10.5px;font-weight:700;border-radius:20px;padding:2px 8px;white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis}.mytask-head{padding:4px 10px;font-size:11.5px;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.4px}.sort-btn{border:none;background:transparent;color:var(--text-faint);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:2px 4px;border-radius:5px;text-align:left;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.sort-btn:hover{color:var(--text);background:var(--hover)}.sort-btn.active{color:var(--primary)}.sort-arrows{font-size:9px;opacity:.8}.table th .sort-btn{font-size:inherit;text-transform:inherit;letter-spacing:inherit;padding:0 2px}.modal.xl{width:880px}.jira-list{max-height:46vh}.jira-list-head{display:flex;align-items:center;gap:14px;padding:2px 10px 8px}.jira-select-all{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px}.jira-select-all input{width:16px;height:16px;accent-color:var(--primary)}.jira-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.jira-row .jira-summary{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jira-row-sub{display:flex;gap:12px;font-size:11.5px;color:var(--text-faint)}.jira-status{flex-shrink:0;font-size:11px;font-weight:700;border:1px solid;border-radius:20px;padding:2px 9px;white-space:nowrap}.jira-search{flex:1;min-width:140px;max-width:320px}.select-all-row{border-bottom:1px solid var(--border-soft);border-radius:0;margin-bottom:4px}.key-tag{display:inline-block;vertical-align:middle;margin-left:7px;font-family:Consolas,monospace;font-size:10.5px;font-weight:700;color:var(--primary);background:var(--active);border-radius:5px;padding:1.5px 7px;white-space:nowrap}.jira-key{font-family:Consolas,monospace;font-size:11.5px;font-weight:700;color:#0086c0;background:#0086c01f;padding:2px 7px;border-radius:5px;flex-shrink:0}[data-theme=dark] .jira-key{color:#4fb8e8}.jira-summary{font-weight:500}.jira-points{font-size:11px;font-weight:700;color:var(--text-faint);flex-shrink:0}.collab-row.jira-imported{opacity:.45}.jira-chip{display:inline-flex;align-items:center;gap:4px;flex-shrink:0;font-size:11.5px;font-weight:700;color:#0086c0;background:#0086c01a;border:1px solid rgba(0,134,192,.3);border-radius:20px;padding:3px 10px;white-space:nowrap}.jira-chip:hover{background:#0086c033}[data-theme=dark] .jira-chip{color:#4fb8e8}.jira-map{width:100%;border-top:1px solid var(--border-soft);padding-top:14px;display:flex;flex-direction:column;gap:10px;align-items:flex-start}.jira-map h3{font-size:14px}.jira-map .stage-row{width:100%}.jira-map-name{flex:1;min-width:0;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jira-map .tpl-owner{width:200px;flex-shrink:0}.donut-wrap{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.donut-center-value{font-size:20px;font-weight:800;fill:var(--text);font-family:inherit}.donut-center-label{font-size:10px;fill:var(--text-faint);text-transform:uppercase;letter-spacing:.6px;font-family:inherit}.donut-legend{flex:1;min-width:180px;display:flex;flex-direction:column;gap:6px}.donut-legend-row{display:flex;align-items:center;gap:8px;font-size:13px}.donut-legend-label{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.donut-legend-value{color:var(--text-soft);font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.burnup{width:100%;height:auto;max-width:720px;display:block}.burnup-grid{stroke:var(--border-soft);stroke-width:1}.burnup-axis{font-size:9.5px;fill:var(--text-faint);font-family:inherit}.burnup-target{stroke:var(--text-faint);stroke-width:1.5;stroke-dasharray:5 4}.burnup-target-label{font-size:9.5px;fill:var(--text-soft);font-weight:700;font-family:inherit}.weekly-bars{display:flex;gap:10px;align-items:flex-end;max-width:720px}.weekly-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}.weekly-value{font-size:10.5px;font-weight:700;color:var(--text-soft);min-height:14px;font-variant-numeric:tabular-nums}.weekly-track{height:110px;width:100%;max-width:44px;display:flex;align-items:flex-end;justify-content:center;background:var(--surface-2);border-radius:6px}.weekly-bar{width:100%;border-radius:5px 5px 0 0;transition:height .25s}.weekly-label{font-size:9.5px;color:var(--text-faint);white-space:nowrap}.report-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px}.print-only{display:none}@media print{:root,[data-theme=dark]{--bg: #ffffff;--surface: #ffffff;--surface-2: #f6f7fb;--hover: #eef0f6;--active: #ececff;--border: #d9dce4;--border-soft: #e8eaf0;--input-border: #c9cdd8;--input-bg: #ffffff;--text: #1c1d22;--text-soft: #4c4f5c;--text-faint: #7d818f;--shadow: none}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}body{background:#fff}.sidebar,.tabs,.page-head,.page-sub,.toast,.floating-timer,.notif-panel,.notif-backdrop,.modal-overlay,.no-print,.btn,.icon-btn{display:none!important}.main{margin:0}.page{padding:0;max-width:none}.print-only{display:block}.report-print-head{margin-bottom:18px;border-bottom:2px solid #1c1d22;padding-bottom:10px}.report-print-head h1{font-size:22px}.report-print-head p{color:#4c4f5c;font-size:12px;margin-top:4px}.card,.stat-tile{box-shadow:none;break-inside:avoid}.dash-columns{grid-template-columns:1fr 1fr}.stat-grid{grid-template-columns:repeat(4,1fr)}}.activity-feed-row{display:flex;align-items:center;gap:10px;padding:9px 4px;border-bottom:1px solid var(--border-soft)}.activity-feed-row:last-child{border-bottom:none}.activity-feed-icon{width:22px;text-align:center;flex-shrink:0}.activity-feed-text{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-feed-text em{font-style:normal;font-weight:600}.activity-feed-time{color:var(--text-faint);font-size:11.5px;white-space:nowrap;flex-shrink:0}.teams-kv{display:grid;grid-template-columns:90px auto;gap:4px 10px;margin:6px 0 2px;align-items:baseline}.teams-kv>span{color:var(--text-faint);font-weight:700;font-size:11px;text-transform:uppercase}.teams-cron{width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px 14px}.teams-cron>strong{font-size:13px}.cron-url-row{display:flex;align-items:center;gap:8px;margin:8px 0}.cron-url{flex:1;min-width:0;background:var(--input-bg);border:1px solid var(--input-border);border-radius:7px;padding:7px 10px;font-family:Consolas,monospace;font-size:11px;overflow-x:auto;white-space:nowrap;color:var(--text-soft)}.teams-help{margin:0;padding:12px 12px 12px 30px;width:100%;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;font-size:12.5px;color:var(--text-soft);line-height:1.65}.teams-help li{margin-bottom:4px}.warn-inline{color:#b57700}[data-theme=dark] .warn-inline{color:#ffc16b}.teams-help code{background:var(--hover);border-radius:4px;padding:1px 5px;font-family:Consolas,monospace;font-size:11.5px}.btn.icon-only{padding:8px 9px;display:inline-flex}.proj-menu-anchor,.more-tab-anchor{position:relative}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:58}.proj-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:59;min-width:230px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 36px #00000040;padding:8px;display:flex;flex-direction:column;gap:2px}.more-tab-anchor .proj-menu{right:auto;left:0}.proj-menu-title{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);padding:8px 10px 4px}.proj-menu-item{border:none;background:transparent;color:var(--text);text-align:left;font:inherit;font-weight:600;font-size:13px;padding:8px 10px;border-radius:8px;cursor:pointer;white-space:nowrap}.proj-menu-item:hover{background:var(--hover)}.proj-menu-item:disabled{color:var(--text-faint);cursor:not-allowed}.board-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-8px 0 18px}.quick-filter{border:1px solid var(--input-border);border-radius:8px;padding:6px 8px;background:var(--input-bg);color:inherit;font-size:12.5px;max-width:170px}.quick-filter:focus{outline:2px solid var(--focus-ring);border-color:var(--primary)}.list-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.bulk-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:var(--active);border:1px solid var(--primary);border-radius:10px;padding:7px 12px}.bulk-bar select{border:1px solid var(--input-border);border-radius:7px;padding:5px 8px;background:var(--input-bg);color:inherit;font-size:12.5px}.list-head,.task-row.list-row{display:grid;grid-template-columns:26px minmax(150px,1fr) 116px 122px 96px 92px 104px 126px 52px 76px;gap:7px;align-items:center}.list-head{padding:4px 10px;font-size:11.5px;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.4px}.list-head input[type=checkbox],.list-row input[type=checkbox]{width:15px;height:15px;accent-color:var(--primary)}.list-row.row-selected{border-color:var(--primary);background:var(--active)}.list-tag{overflow:hidden}.list-num{font-size:12px;color:var(--text-soft);font-variant-numeric:tabular-nums;white-space:nowrap}.list-num.over-text{color:var(--danger);font-weight:700}.board-page{background-repeat:no-repeat}.bg-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.bg-swatch{height:62px;border:2px solid var(--border);border-radius:10px;font:inherit;font-size:12px;font-weight:700;color:var(--text);cursor:pointer;display:flex;align-items:flex-end;justify-content:flex-start;padding:8px}.bg-swatch:hover{border-color:var(--input-border)}.bg-swatch.selected{border-color:var(--primary);box-shadow:0 0 0 2px var(--focus-ring)}@media(max-width:900px){.sidebar{display:none}.page{padding:20px}.task-table-head{display:none}.task-row{grid-template-columns:32px 1fr 100px 100px;grid-auto-rows:auto;row-gap:6px}}
