/* todo. — original, dependency-free interface. All assets are local. */
:root{color-scheme:light;--bg:#f7f8f5;--surface:#fff;--surface2:#f2f4ef;--surface3:#eaf0e7;--sidebar:#f1f3ee;--text:#202921;--text2:#596457;--muted:#879080;--line:#e5e9df;--line-strong:#d4dccd;--green:#386b42;--green-hover:#2d5735;--lime:#daefb4;--mint:#eaf2e2;--red:#b45d4d;--redbg:#faf0ec;--amber:#a9833e;--amberbg:#f6f0e2;--blue:#4f7883;--bluebg:#eaf2f3;--shadow:0 8px 35px #25352509;--shadow-float:0 15px 55px #25352525;--radius:16px;--font-scale:1;--ease:cubic-bezier(.22,1,.36,1);--sidebar-w:246px;--page-title-size:calc(30px*var(--font-scale));--page-title-weight:600;--font:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}
[data-theme=dark]{color-scheme:dark;--bg:#171d19;--surface:#202823;--surface2:#28322b;--surface3:#313c2f;--sidebar:#1c241e;--text:#ecf0e6;--text2:#b4beb0;--muted:#85917f;--line:#303b30;--line-strong:#465140;--green:#b8d994;--green-hover:#c9e4ae;--lime:#cfe6a7;--mint:#2e3b29;--red:#e2a08d;--redbg:#382d27;--amber:#d1b878;--amberbg:#353125;--blue:#92bdc5;--bluebg:#24383a;--shadow:0 8px 35px #00000013;--shadow-float:0 15px 65px #0000004a}
*{box-sizing:border-box}html{height:100%;scroll-behavior:smooth}body{margin:0;font-family:var(--font);font-size:calc(14px*var(--font-scale));line-height:1.5;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;transition:background .35s,color .25s}button,input,textarea,select{font:inherit}button{border:0;background:none;color:inherit;cursor:pointer;touch-action:manipulation}button:disabled{cursor:wait;opacity:.5}button,input,textarea,select,a{-webkit-tap-highlight-color:transparent}button,a,input,select,textarea{outline-offset:4px}button:focus-visible,a:focus-visible{outline:2px solid var(--green)}input:focus,textarea:focus,select:focus{outline:1px solid var(--green);outline-offset:0;box-shadow:none}a{color:var(--green)}button:active{transform:scale(.975)}button{transition:background .18s,color .18s,transform .2s var(--ease),box-shadow .18s}button svg{pointer-events:none}.icon{width:19px;height:19px;flex-shrink:0;stroke-width:1.65;vertical-align:middle}.icon-sm{width:15px;height:15px}.icon-lg{width:24px;height:24px}h1,h2,h3,p{margin:0}h1{font-size:var(--page-title-size);line-height:1.15;letter-spacing:-.9px;font-weight:var(--page-title-weight)}h2{font-size:calc(23px*var(--font-scale));line-height:1.25;letter-spacing:-.65px;font-weight:620}h3{font-size:calc(15px*var(--font-scale));font-weight:600}small{font-size:calc(12px*var(--font-scale))}.muted{color:var(--muted)}.secondary{color:var(--text2)}.caps{font-size:calc(10px*var(--font-scale));font-weight:650;letter-spacing:1.7px;text-transform:uppercase}.flex{display:flex;align-items:center}.grow{flex:1;min-width:0}.gap{gap:9px}.hidden{display:none!important}.skip-link{position:fixed;top:-100px;left:20px;background:var(--surface);padding:12px;z-index:300}.skip-link:focus{top:10px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;color:var(--text2);flex-shrink:0}.icon-btn:hover{background:var(--surface2);color:var(--text)}.icon-btn.danger:hover{background:var(--redbg);color:var(--red)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:41px;padding:0 17px;border-radius:10px;font-size:calc(12px*var(--font-scale));font-weight:550;white-space:nowrap}.btn-primary{background:var(--green);color:var(--surface)}[data-theme=dark] .btn-primary{color:#20321f}.btn-primary:hover{background:var(--green-hover);box-shadow:0 4px 13px #386b4220}.btn-light{background:var(--surface);border:1px solid var(--line);color:var(--text2)}.btn-light:hover{border-color:var(--line-strong);background:var(--surface2)}.btn-ghost{color:var(--text2)}.btn-ghost:hover{background:var(--surface2)}.btn-lime{background:var(--lime);color:#2d4525}.btn-lime:hover{filter:brightness(.97)}.btn-danger{background:var(--redbg);color:var(--red)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border-radius:5px;font-size:calc(10px*var(--font-scale));font-weight:550;white-space:nowrap;background:var(--surface2);color:var(--text2)}.badge-green{background:var(--mint);color:var(--green)}.badge-red{background:var(--redbg);color:var(--red)}.badge-blue{background:var(--bluebg);color:var(--blue)}.dot{width:6px;height:6px;border-radius:50%;display:inline-block;background:currentColor;flex-shrink:0}.app-shell{min-height:100dvh;padding-left:var(--sidebar-w)}.sidebar{position:fixed;left:0;top:0;bottom:0;width:var(--sidebar-w);background:var(--sidebar);border-right:1px solid var(--line);padding:29px 19px 14px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:10px;padding:0 13px 24px}.brand-mark{width:30px;height:30px;background:var(--green);border-radius:9px;display:grid;place-items:center;color:var(--surface);transform:rotate(-7deg)}[data-theme=dark] .brand-mark{color:#20321f}.brand-mark svg{width:20px;height:20px;transform:rotate(7deg)}.wordmark{font-size:calc(29px*var(--font-scale));letter-spacing:-1.8px;font-weight:750;line-height:1}.brand-dot{color:var(--green)}.brand-caption{font-size:calc(10px*var(--font-scale));color:var(--muted);margin-top:6px;letter-spacing:.1px}.sidebar-scroll{overflow:auto;flex:1;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;padding-bottom:15px}.nav-heading{padding:0 13px 11px;color:var(--muted)}.nav-list{display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;text-align:left;gap:11px;width:100%;height:34px;padding:0 13px;border-radius:8px;color:var(--text2);font-size:calc(12px*var(--font-scale));line-height:1.2;position:relative}.nav-item .icon{width:17px;height:17px}.nav-item:hover{background:var(--surface3)}.nav-item.active{background:var(--surface);box-shadow:0 2px 4px #18200d04;color:var(--green);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:-8px;width:3px;height:18px;border-radius:2px;background:var(--green)}.nav-count{margin-left:auto;color:var(--muted);font-size:calc(10px*var(--font-scale));min-width:20px;text-align:center}.nav-item.active .nav-count{background:var(--mint);padding:1px 5px;border-radius:4px;color:var(--green)}.nav-item.overdue .nav-count{color:var(--red);background:var(--redbg);padding:1px 5px;border-radius:4px}.nav-separator{height:1px;background:var(--line);margin:11px 12px}.list-group{margin-top:12px}.group-heading{display:flex;align-items:center;justify-content:space-between;padding:0 9px 3px 12px;color:var(--muted)}.group-heading>button:first-child{display:flex;align-items:center;gap:6px;padding:0;font-size:calc(10px*var(--font-scale));letter-spacing:1.5px;text-transform:uppercase}.group-heading .icon-btn{width:24px;height:24px}.dynamic-row{display:flex;align-items:center;gap:8px;border-radius:8px;padding:0 6px 0 13px;height:27px;font-size:calc(11px*var(--font-scale));line-height:1.25;color:var(--text2)}.dynamic-row:hover{background:var(--surface3)}.filter-toggle{padding:0;width:13px;height:13px;border:1px solid var(--line-strong);border-radius:4px;display:grid;place-items:center;flex-shrink:0}.filter-toggle.checked{background:var(--green);border-color:var(--green);color:var(--surface)}[data-theme=dark] .filter-toggle.checked{color:#20321f}.filter-toggle .icon{width:10px;height:10px}.dynamic-label{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;padding:0}.dynamic-count{font-size:calc(10px*var(--font-scale));color:var(--muted)}.dynamic-more{width:20px;height:24px;opacity:0}.dynamic-row:hover .dynamic-more,.dynamic-more:focus-visible{opacity:1}.sidebar-bottom{padding:13px 9px 0;border-top:1px solid var(--line)}.sidebar-mini{font-size:calc(11px*var(--font-scale));display:flex;gap:10px;align-items:center;width:100%;color:var(--text2);padding:7px 2px}.sidebar-mini .icon{width:16px;height:16px}.theme-toggle{display:flex;align-items:center;padding:3px;border:1px solid var(--line);border-radius:8px;gap:2px;margin-left:auto}.theme-toggle button{width:25px;height:22px;border-radius:5px;display:grid;place-items:center;color:var(--muted)}.theme-toggle button.active{background:var(--surface);color:var(--green);box-shadow:0 1px 3px #00000008}.theme-toggle .icon{width:13px;height:13px}.sidebar-credit{font-size:calc(9px*var(--font-scale));color:var(--muted);margin-top:10px;display:flex;align-items:center;gap:5px;padding:0 2px}.topbar{height:81px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:0 40px;background:var(--bg);position:relative;z-index:10}.workspace-switch{display:flex;padding:4px;background:var(--surface2);border:1px solid var(--line);border-radius:11px;gap:2px}.workspace-switch button{display:flex;align-items:center;justify-content:center;gap:8px;padding:7px 15px;font-size:calc(11px*var(--font-scale));border-radius:7px;color:var(--muted);min-width:109px}.workspace-switch button .icon{width:15px;height:15px}.workspace-switch button.active{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 2px 5px #1b321410}.search-open{margin-left:auto;display:flex;gap:9px;align-items:center;color:var(--muted);font-size:calc(11px*var(--font-scale));padding:8px 0}.search-open .icon{width:16px;height:16px}.keycap{border:1px solid var(--line-strong);border-radius:5px;line-height:17px;padding:0 5px;font-size:calc(9px*var(--font-scale));color:var(--muted);margin-left:16px}.topbar-rule{height:22px;width:1px;background:var(--line)}.connection{display:flex;align-items:center;gap:7px;font-size:calc(10px*var(--font-scale));color:var(--text2)}.connection .dot{color:var(--green);width:5px;height:5px}.profile-label{font-size:calc(11px*var(--font-scale));font-weight:500;display:flex;align-items:center;gap:9px}.profile-symbol{width:28px;height:28px;border:1px solid var(--line-strong);background:var(--surface2);color:var(--text2);border-radius:50%;display:grid;place-items:center;font-size:calc(9px*var(--font-scale))}.main-content{max-width:1480px;margin:0 auto;padding:38px 40px 110px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.eyebrow{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:calc(10px*var(--font-scale));letter-spacing:1.4px;margin-bottom:10px;text-transform:uppercase}.eyebrow .icon{width:14px;height:14px;color:var(--green)}.page-title-line{display:flex;align-items:center;gap:14px}.view-badge{font-size:calc(12px*var(--font-scale));letter-spacing:0;align-self:center;background:var(--surface2);border:1px solid var(--line);color:var(--text2);padding:3px 9px;border-radius:7px}.page-description{color:var(--muted);font-size:calc(12px*var(--font-scale));margin-top:10px}.page-actions{display:flex;gap:12px;align-items:center}.smart-composer{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:13px 18px;margin-bottom:20px;transition:box-shadow .3s,border-color .3s;position:relative;overflow:hidden}.smart-composer:focus-within{border-color:var(--green);box-shadow:0 0 0 3px var(--mint)}.composer-upper{display:flex;gap:12px;align-items:center}.ai-emblem{width:35px;height:35px;border:1px solid var(--line);border-radius:10px;display:grid;place-items:center;color:var(--green);background:var(--mint);flex-shrink:0}.ai-emblem .icon{width:20px;height:20px}.quick-input{flex:1;min-width:0;border:none!important;outline:none!important;background:transparent;font-size:calc(13px*var(--font-scale));color:var(--text);padding:7px 0}.quick-input::placeholder{color:var(--text2);opacity:.82}.composer-hint{margin:9px 0 0 47px;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:calc(10px*var(--font-scale))}.composer-hint .dot{width:4px;height:4px}.ai-status{margin-left:auto;font-size:calc(9px*var(--font-scale));display:flex;align-items:center;gap:5px;padding:1px 0;white-space:nowrap;color:var(--muted)}.ai-status .dot{color:var(--amber)}.ai-status.ready .dot{color:var(--green)}.composer-tools{display:flex;align-items:center;gap:2px}.composer-submit{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;margin-left:7px;background:var(--green);color:var(--surface)}[data-theme=dark] .composer-submit{color:#20321f}.composer-submit .icon{width:17px;height:17px}.composer-tools .icon-btn{width:30px;height:32px}.composer-tools .icon{width:16px;height:16px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:15px}.view-tabs{display:flex;align-items:center;gap:7px}.view-tabs button{display:flex;gap:6px;align-items:center;font-size:calc(11px*var(--font-scale));color:var(--muted);padding:7px 10px;border-radius:7px}.view-tabs button.active{background:var(--surface);border:1px solid var(--line);color:var(--text);box-shadow:0 2px 3px #18200d03}.view-tabs .icon{width:15px;height:15px}.toolbar-actions{display:flex;gap:8px}.toolbar-control{display:flex;gap:7px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:var(--surface);font-size:calc(10px*var(--font-scale));color:var(--text2)}.toolbar-control .icon{width:13px;height:13px}.toolbar-control.active{background:var(--mint);color:var(--green);border-color:var(--green)}.filter-chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:15px}.filter-chip{display:inline-flex;align-items:center;gap:6px;font-size:calc(10px*var(--font-scale));color:var(--green);background:var(--mint);border-radius:6px;padding:5px 8px}.filter-chip .icon{width:12px;height:12px}.task-group{margin-bottom:24px;animation:enter .5s var(--ease) both}.section-heading{display:flex;align-items:center;gap:8px;color:var(--text2);margin-bottom:11px;font-size:calc(11px*var(--font-scale));font-weight:550}.section-heading .icon{width:13px;height:13px;color:var(--muted)}.section-heading .section-count{font-size:calc(9px*var(--font-scale));background:var(--surface2);border:1px solid var(--line);padding:0 5px;line-height:16px;border-radius:4px;color:var(--muted);font-weight:400}.section-heading .section-label{letter-spacing:.1px}.section-heading.red{color:var(--red)}.section-heading.red .icon{color:var(--red)}.section-heading.red .section-count{background:var(--redbg);border-color:transparent;color:var(--red)}.section-heading .right-label{margin-left:auto;color:var(--muted);font-size:calc(9px*var(--font-scale));font-weight:400}.section-heading .subtle-btn{font-size:calc(9px*var(--font-scale));margin-left:auto;color:var(--muted);font-weight:400;text-decoration:underline;text-underline-offset:3px}.task-list{display:flex;flex-direction:column;gap:9px}.task-card{border:1px solid var(--line);background:var(--surface);border-radius:11px;position:relative;transition:transform .25s var(--ease),box-shadow .25s,border-color .25s;animation:enter .45s var(--ease) both;animation-delay:calc(var(--index,0)*35ms);overflow:hidden}.task-card:hover{border-color:var(--line-strong);box-shadow:var(--shadow);transform:translateY(-1px)}.task-row{display:flex;gap:13px;align-items:flex-start;padding:17px 17px 14px;cursor:pointer;min-height:81px}.task-check{width:18px;height:18px;border:1.3px solid var(--line-strong);border-radius:6px;margin-top:2px;display:grid;place-items:center;flex-shrink:0;padding:0;transition:all .25s}.task-check:hover{background:var(--mint);border-color:var(--green);transform:scale(1.08)}.task-check .icon{width:12px;height:12px}.task-check.done{background:var(--green);border-color:var(--green);color:var(--surface)}[data-theme=dark] .task-check.done{color:#20321f}.task-title{font-weight:550;font-size:calc(12px*var(--font-scale));line-height:1.6;letter-spacing:.04px;overflow-wrap:anywhere}.task-title-wrap{display:flex;align-items:center;gap:8px}.task-body{flex:1;min-width:0}.task-meta{margin-top:7px;display:flex;align-items:center;gap:11px;flex-wrap:wrap;font-size:calc(9px*var(--font-scale));color:var(--muted);line-height:1.5}.task-meta>span,.task-meta>button{display:inline-flex;align-items:center;gap:4px}.task-meta .icon{width:12px;height:12px}.task-meta .project-tag{color:var(--text2)}.task-meta .client-tag{padding:2px 6px;border-radius:4px;background:var(--surface2);color:var(--text2);font-size:calc(9px*var(--font-scale))}.task-meta .meta-dot{width:2px;height:2px;border-radius:50%;background:var(--line-strong);padding:0}.task-meta button{padding:0;color:var(--muted);font-size:calc(9px*var(--font-scale))}.task-meta button:hover{color:var(--green)}.task-meta .sub-progress{display:inline-flex;width:28px;height:3px;border-radius:2px;background:var(--line);overflow:hidden}.task-meta .sub-progress span{background:var(--green);height:100%;border-radius:2px}.task-right{display:flex;align-items:center;justify-content:flex-end;gap:13px;align-self:center;margin-left:6px}.task-due{display:flex;align-items:center;gap:5px;font-size:calc(10px*var(--font-scale));color:var(--text2);white-space:nowrap}.task-due .icon{width:12px;height:12px}.task-due.red{color:var(--red)}.task-actions{display:flex;gap:2px;margin-left:6px}.task-actions .icon-btn{width:27px;height:29px;color:var(--muted)}.task-actions .icon{width:14px;height:14px}.task-actions .icon-btn:hover{color:var(--green)}.task-actions .icon-btn.danger:hover{color:var(--red)}.task-card.is-complete{background:transparent;opacity:.66}.task-card.is-complete:hover{opacity:1}.task-card.is-complete .task-title{text-decoration:line-through;color:var(--text2)}.subtasks-inline{padding:0 20px 14px 48px;animation:expand .25s var(--ease)}.subtask-row{display:flex;align-items:flex-start;gap:9px;min-height:33px;padding:7px 0;color:var(--text2);font-size:calc(11px*var(--font-scale))}.subtask-row .task-check{width:15px;height:15px;border-radius:4px;margin-top:2px}.subtask-text{flex:1;text-align:left;padding:0;overflow-wrap:anywhere;font-size:calc(11px*var(--font-scale))}.subtask-text.done{text-decoration:line-through;color:var(--muted)}.subtask-children{border-left:1px solid var(--line-strong);padding-left:18px;margin-left:7px}.subtask-actions{display:flex;align-items:center;opacity:0}.subtask-row:hover .subtask-actions{opacity:1}.subtask-actions .icon-btn{width:23px;height:23px}.subtask-actions .icon{width:12px;height:12px}.add-inline{display:flex;gap:9px;align-items:center;padding:14px 17px;color:var(--muted);font-size:calc(11px*var(--font-scale));width:100%;border:1px dashed var(--line-strong);border-radius:10px;background:transparent;margin-top:10px;text-align:left}.add-inline:hover{color:var(--green);border-color:var(--green);background:var(--mint)}.add-inline .icon{width:16px;height:16px}.quiet-footer{display:flex;justify-content:center;align-items:center;gap:7px;padding:10px;font-size:calc(9px*var(--font-scale));color:var(--muted);margin-top:24px}.quiet-footer .icon{width:12px;height:12px}.empty-state{text-align:center;padding:57px 20px 60px;border:1px dashed var(--line-strong);border-radius:16px;background:var(--surface);margin:15px 0}.empty-symbol{width:64px;height:64px;border-radius:20px;background:var(--mint);color:var(--green);display:grid;place-items:center;margin:0 auto 19px;transform:rotate(-6deg)}.empty-symbol .icon{width:29px;height:29px;transform:rotate(6deg)}.empty-state h3{font-size:calc(17px*var(--font-scale));font-weight:550;letter-spacing:-.3px}.empty-state p{font-size:calc(12px*var(--font-scale));color:var(--muted);margin:8px 0 19px}.thumb-zone{position:fixed;bottom:26px;right:28px;z-index:35;display:flex;gap:10px;align-items:center}.desktop-fab{width:50px;height:50px;background:var(--green);color:var(--surface);box-shadow:var(--shadow-float);border-radius:16px;display:grid;place-items:center}.desktop-fab .icon{width:23px;height:23px}[data-theme=dark] .desktop-fab{color:#20321f}.desktop-fab:hover{transform:translateY(-3px) rotate(3deg);background:var(--green-hover)}.desktop-shortcut{font-size:calc(9px*var(--font-scale));background:var(--surface);border:1px solid var(--line);padding:6px 9px;border-radius:7px;color:var(--muted);box-shadow:var(--shadow)}.mobile-dock,.mobile-brand,.mobile-mode,.mobile-only{display:none}.popover-shade{position:fixed;inset:0;z-index:65;background:transparent}.popover{position:fixed;z-index:66;background:var(--surface);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow-float);padding:7px;min-width:190px;max-width:320px;max-height:80dvh;overflow:auto;animation:pop-in .22s var(--ease);transform-origin:bottom right}.popover-title{font-size:calc(9px*var(--font-scale));letter-spacing:1px;color:var(--muted);padding:7px 9px 8px;text-transform:uppercase}.popover button.menu-item{width:100%;display:flex;align-items:center;gap:9px;padding:9px;border-radius:7px;text-align:left;font-size:calc(11px*var(--font-scale));color:var(--text2)}.popover button.menu-item:hover,.popover button.menu-item.active{background:var(--mint);color:var(--green)}.popover .menu-item .icon{width:16px;height:16px}.popover .menu-item .count{margin-left:auto;font-size:calc(9px*var(--font-scale))}.popover button.menu-item.danger{color:var(--red)}.popover hr{border:0;border-top:1px solid var(--line);margin:5px 7px}.popover input[type=date]{width:100%;margin:5px 0;border:1px solid var(--line);border-radius:7px;background:var(--surface2);color:var(--text);padding:8px;font-size:calc(12px*var(--font-scale))}.popover .selected-mark{margin-left:auto}.popover .close-menu{display:none}.modal-backdrop{position:fixed;inset:0;background:#111c145c;backdrop-filter:blur(5px);z-index:80;display:flex;align-items:center;justify-content:center;padding:30px;animation:fade-in .2s}.modal{background:var(--surface);border:1px solid var(--line);border-radius:21px;box-shadow:0 30px 130px #05130d38;width:740px;max-width:100%;max-height:calc(100dvh - 60px);display:flex;flex-direction:column;overflow:hidden;animation:modal-in .38s var(--ease)}.modal.small{width:490px}.modal.wide{width:820px}.modal-top{padding:19px 26px 16px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line)}.modal-crumb{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:calc(10px*var(--font-scale))}.modal-crumb .icon{width:13px;height:13px}.modal-crumb>button{font-size:calc(10px*var(--font-scale));color:var(--text2);padding:0}.modal-top .spacer{flex:1}.modal-title{font-size:calc(16px*var(--font-scale));font-weight:550;letter-spacing:-.3px}.modal-body{overflow-y:auto;padding:25px 29px 28px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.modal-footer{border-top:1px solid var(--line);padding:17px 26px;display:flex;align-items:center;gap:9px;background:var(--surface);flex-shrink:0}.footer-note{color:var(--muted);font-size:calc(10px*var(--font-scale));display:flex;align-items:center;gap:6px;flex:1}.footer-note .icon{width:13px;height:13px}.field-title{font-size:calc(11px*var(--font-scale));color:var(--text2);font-weight:550;display:block;margin-bottom:7px}.text-input{width:100%;border:1px solid var(--line-strong);border-radius:9px;padding:10px 12px;color:var(--text);background:var(--surface);font-size:calc(12px*var(--font-scale));min-height:42px}.text-input::placeholder{color:var(--muted)}textarea.text-input{resize:vertical;min-height:88px;line-height:1.6}.task-title-input{font-size:calc(23px*var(--font-scale));line-height:1.4;letter-spacing:-.6px;resize:none;font-weight:550;border:0;width:100%;padding:0;color:var(--text);background:transparent;min-height:72px;outline-offset:5px}.task-title-input::placeholder{color:var(--muted)}.task-description-input{font-size:calc(12px*var(--font-scale));resize:vertical;min-height:62px;line-height:1.7;border:0;color:var(--text2);padding:0;width:100%;background:transparent}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:19px 18px;margin:24px 0}.field-with-icon{position:relative}.field-with-icon>.icon{position:absolute;left:11px;top:13px;width:15px;height:15px;color:var(--muted);pointer-events:none}.field-with-icon .text-input{padding-left:35px}.date-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:8px}.field-hint{font-size:calc(10px*var(--font-scale));color:var(--muted);margin:7px 0 14px}.modal-tabs{display:flex;gap:23px;border-bottom:1px solid var(--line);padding:0 28px}.modal-tabs button{display:flex;align-items:center;gap:7px;font-size:calc(11px*var(--font-scale));color:var(--muted);padding:13px 0 12px;border-bottom:2px solid transparent;margin-bottom:-1px}.modal-tabs button.active{border-bottom-color:var(--green);color:var(--green);font-weight:550}.modal-tabs .icon{width:14px;height:14px}.modal-tabs .badge{font-size:calc(9px*var(--font-scale));padding:0 5px}.detail-status{display:flex;align-items:center;gap:8px;margin-bottom:16px}.priority-option{display:flex;align-items:center;gap:7px}.detail-heading{display:flex;gap:13px;align-items:flex-start;margin-bottom:13px}.detail-heading h2{font-size:calc(23px*var(--font-scale));line-height:1.4;overflow-wrap:anywhere;flex:1}.detail-heading .task-check{width:21px;height:21px;margin-top:5px}.detail-heading.completed h2{color:var(--muted);text-decoration:line-through}.detail-description{color:var(--text2);font-size:calc(12px*var(--font-scale));line-height:1.85;margin:13px 0 24px;white-space:pre-wrap;overflow-wrap:anywhere}.properties{display:grid;grid-template-columns:1fr 1fr;gap:17px 26px;padding:20px;background:var(--bg);border:1px solid var(--line);border-radius:12px;margin-bottom:26px}.property{display:flex;flex-direction:column;gap:5px}.property-label{display:flex;gap:6px;align-items:center;font-size:calc(9px*var(--font-scale));color:var(--muted)}.property-label .icon{width:13px;height:13px}.property-value{font-size:calc(11px*var(--font-scale));color:var(--text);font-weight:500;padding-left:19px}.detail-section-head{display:flex;align-items:center;gap:9px;margin-bottom:10px;font-size:calc(12px*var(--font-scale));font-weight:550}.detail-section-head .subprogress-label{margin-left:auto;color:var(--muted);font-weight:400;font-size:calc(10px*var(--font-scale))}.subtasks-progress{height:3px;border-radius:2px;background:var(--line);margin-bottom:12px;overflow:hidden}.subtasks-progress>span{display:block;height:100%;background:var(--green);transition:width .5s var(--ease)}.subtask-entry{display:flex;gap:7px;margin-top:12px;align-items:center}.subtask-entry input{flex:1;min-width:0}.subtask-entry .btn{min-height:38px;padding:0 10px}.nested-add{margin:6px 0 8px 25px;display:flex;gap:6px}.nested-add input{min-width:0;flex:1}.comment-row{display:flex;gap:12px;margin-bottom:23px;animation:enter .3s var(--ease)}.comment-mark{width:28px;height:28px;border-radius:8px;background:var(--mint);color:var(--green);display:grid;place-items:center;flex-shrink:0}.comment-mark .icon{width:15px;height:15px}.comment-meta{display:flex;align-items:center;gap:10px;font-size:calc(10px*var(--font-scale));font-weight:550;margin-bottom:7px}.comment-meta time{color:var(--muted);font-size:calc(9px*var(--font-scale));font-weight:400}.comment-content{font-size:calc(12px*var(--font-scale));color:var(--text2);line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}.comment-image{margin-top:9px;width:100%;max-width:270px;max-height:180px;object-fit:contain;object-position:left;border-radius:9px;display:block;border:1px solid var(--line)}.comment-compose{border:1px solid var(--line-strong);border-radius:13px;padding:13px;margin-top:15px;background:var(--bg)}.comment-compose textarea{width:100%;background:transparent;border:none;resize:vertical;min-height:76px;color:var(--text);font-size:calc(12px*var(--font-scale));line-height:1.7}.comment-compose:focus-within{border-color:var(--green)}.comment-compose-bottom{display:flex;gap:3px;align-items:center}.comment-compose-bottom .btn{margin-left:auto;min-height:34px}.comment-compose-bottom .icon-btn{width:30px;height:30px}.comment-compose-bottom .icon{width:16px;height:16px}.comment-ai-label{font-size:calc(9px*var(--font-scale));color:var(--muted);padding-left:6px}.photo-preview{display:flex;align-items:center;gap:10px;margin:5px 0 10px;font-size:calc(10px*var(--font-scale));color:var(--text2)}.photo-preview img{width:48px;height:48px;object-fit:cover;border-radius:7px}.ai-notice{display:flex;align-items:flex-start;gap:9px;padding:11px 13px;background:var(--mint);border:1px solid var(--line);border-radius:9px;font-size:calc(10px*var(--font-scale));color:var(--text2);margin-bottom:18px;line-height:1.7}.ai-notice .icon{width:16px;height:16px;margin-top:2px;color:var(--green);flex-shrink:0}.ai-entry{padding:14px;border:1px solid var(--line-strong);border-radius:12px;background:var(--bg);margin-bottom:20px}.ai-entry textarea{width:100%;border:0;background:transparent;min-height:90px;resize:vertical;font-size:calc(13px*var(--font-scale));color:var(--text);line-height:1.7}.ai-entry-tools{display:flex;gap:4px;align-items:center;margin-top:6px}.ai-entry-tools .btn{margin-left:auto;min-height:35px}.settings-section{margin-bottom:27px}.settings-section:last-child{margin-bottom:0}.settings-section h3{font-size:calc(13px*var(--font-scale));margin-bottom:12px}.settings-section p{font-size:calc(11px*var(--font-scale));color:var(--text2);line-height:1.8}.settings-row{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.settings-row:last-child{border-bottom:0}.settings-row strong{font-size:calc(12px*var(--font-scale));font-weight:500;display:block}.settings-row small{font-size:calc(10px*var(--font-scale));color:var(--muted);display:block;margin-top:4px}.settings-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:13px}.settings-code{font-size:calc(11px*var(--font-scale));display:block;background:var(--bg);border:1px solid var(--line);border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere;padding:12px;margin:12px 0;color:var(--text2)}.settings-note{display:flex;gap:8px;margin-top:10px;font-size:calc(10px*var(--font-scale));color:var(--muted);align-items:flex-start}.settings-note .icon{width:14px;height:14px;flex-shrink:0;margin-top:2px}.manage-tabs{display:flex;gap:5px;margin-bottom:15px;background:var(--surface2);border-radius:9px;padding:4px}.manage-tabs button{flex:1;padding:8px 10px;border-radius:6px;font-size:calc(10px*var(--font-scale));color:var(--muted)}.manage-tabs button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.manage-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}.manage-row input{flex:1;min-width:0}.manage-row .badge{margin:0 3px}.search-box{display:flex;align-items:center;gap:12px;padding:20px 23px;border-bottom:1px solid var(--line)}.search-box .icon{color:var(--green)}.search-box input{border:0;background:transparent;outline:none!important;color:var(--text);font-size:calc(16px*var(--font-scale));flex:1;min-width:0}.search-results{min-height:150px;max-height:450px;overflow:auto;padding:10px}.search-result{display:flex;align-items:center;gap:11px;padding:13px;border-radius:9px;width:100%;text-align:left}.search-result:hover{background:var(--mint)}.search-result .icon{color:var(--muted);width:16px;height:16px}.search-result-title{font-size:calc(12px*var(--font-scale));font-weight:500;overflow-wrap:anywhere}.search-result-meta{font-size:calc(10px*var(--font-scale));color:var(--muted);margin-top:4px}.search-footer{padding:12px 24px;color:var(--muted);font-size:calc(10px*var(--font-scale));background:var(--bg);border-top:1px solid var(--line)}.timeline-board{border:1px solid var(--line);background:var(--surface);border-radius:14px;overflow:hidden;margin-top:10px;animation:enter .4s var(--ease)}.timeline-scroll{overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.timeline-grid{min-width:790px}.timeline-header{display:grid;grid-template-columns:250px repeat(7,minmax(65px,1fr));border-bottom:1px solid var(--line);background:var(--bg)}.timeline-label{padding:16px;font-size:calc(10px*var(--font-scale));color:var(--muted);display:flex;align-items:center;gap:6px}.timeline-day{text-align:center;border-left:1px solid var(--line);padding:12px 6px;color:var(--muted);font-size:calc(9px*var(--font-scale))}.timeline-day strong{display:block;font-size:calc(15px*var(--font-scale));font-weight:500;color:var(--text);margin-top:4px}.timeline-day.today{background:var(--mint);color:var(--green)}.timeline-day.today strong{color:var(--green)}.timeline-task-row{display:grid;grid-template-columns:250px repeat(7,minmax(65px,1fr));position:relative;min-height:65px;border-bottom:1px solid var(--line)}.timeline-task-row:last-child{border-bottom:0}.timeline-task-label{padding:14px 16px;display:flex;align-items:center;gap:9px;font-size:calc(11px*var(--font-scale));min-width:0;text-align:left;background:var(--surface);z-index:1}.timeline-task-label>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-cell{border-left:1px solid var(--line);min-height:65px;grid-row:1}.timeline-cell.today{background:var(--mint);opacity:.3}.timeline-bar{grid-row:1;align-self:center;margin:0 6px;min-width:0;padding:7px 8px;border-radius:7px;background:var(--mint);color:var(--green);border:1px solid var(--line-strong);font-size:calc(9px*var(--font-scale));white-space:nowrap;text-overflow:ellipsis;overflow:hidden;z-index:2;cursor:pointer;display:flex;gap:5px;align-items:center;height:29px}.timeline-bar.overdue{background:var(--redbg);color:var(--red);border-color:var(--redbg)}.timeline-controls{display:flex;align-items:center;gap:8px;color:var(--text2);font-size:calc(11px*var(--font-scale))}.timeline-controls .btn{min-height:31px;padding:0 10px;font-size:calc(10px*var(--font-scale))}.timeline-controls .icon-btn{width:28px;height:28px}.board-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.board-col{background:var(--surface2);padding:13px;border-radius:12px;border:1px solid var(--line);min-height:240px}.board-col .section-heading{margin:0 0 13px}.board-col .task-row{padding:13px 12px;flex-wrap:wrap;gap:9px}.board-col .task-body{width:calc(100% - 32px);flex:auto}.board-col .task-right{width:100%;margin-left:26px;justify-content:space-between}.board-col .task-actions{margin-left:auto}.board-col .task-meta{gap:7px}.board-col .task-title{font-size:calc(11px*var(--font-scale))}.board-col .task-check{width:16px;height:16px}.board-col .task-card{margin-bottom:9px}.board-col .task-card:last-child{margin-bottom:0}.board-col .task-due{font-size:calc(9px*var(--font-scale))}.board-col .subtasks-inline{padding-left:20px}.empty-column{padding:25px 5px;text-align:center;font-size:calc(10px*var(--font-scale));color:var(--muted)}.toast{position:fixed;bottom:31px;left:calc(50% + var(--sidebar-w)/2);transform:translateX(-50%);background:var(--text);color:var(--bg);box-shadow:var(--shadow-float);border-radius:11px;padding:12px 16px;font-size:calc(11px*var(--font-scale));display:flex;align-items:center;gap:11px;z-index:150;max-width:calc(100vw - 34px);animation:toast-in .25s var(--ease)}.toast>.icon{color:var(--lime);width:17px;height:17px}.toast button{color:var(--lime);font-size:calc(11px*var(--font-scale));white-space:nowrap;padding:3px}.toast button.close-toast{color:var(--bg);opacity:.5}.toast .icon-sm{width:13px;height:13px}.listening .ai-emblem,.listening-mic{animation:mic-pulse 1.2s infinite!important;background:var(--redbg)!important;color:var(--red)!important}.loading-icon{animation:spin 1.4s linear infinite}.saving-hint{font-size:calc(10px*var(--font-scale));color:var(--green)}.confirm-message{font-size:calc(12px*var(--font-scale));color:var(--text2);line-height:1.9;white-space:pre-wrap}.keyboard-note{font-size:calc(9px*var(--font-scale));color:var(--muted);text-align:center;margin-top:11px}.modal .keyboard-note{margin-top:16px}.density-compact .task-row{padding-top:11px;padding-bottom:10px;min-height:65px}.density-compact .task-list{gap:6px}.density-compact .task-meta{margin-top:4px}.density-compact .task-group{margin-bottom:19px}.select-all-filter{margin-bottom:12px;display:flex;justify-content:flex-end}.filter-modal-group{margin-bottom:22px}.filter-modal-title{font-size:calc(11px*var(--font-scale));color:var(--text2);margin-bottom:9px;font-weight:550}.filter-modal-row{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:calc(12px*var(--font-scale))}.filter-modal-row>button.dynamic-label{font-size:calc(12px*var(--font-scale))}.file-chip{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--bg);border:1px solid var(--line);border-radius:8px;font-size:calc(11px*var(--font-scale));margin-bottom:16px}.file-chip img{width:45px;height:45px;border-radius:6px;object-fit:cover}.date-overdue-note{font-size:calc(9px*var(--font-scale));color:var(--red);margin:6px 0}.mobile-task-switch{display:none}
@keyframes enter{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes expand{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes pop-in{from{opacity:0;transform:scale(.92) translateY(5px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modal-in{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-in{from{opacity:0;bottom:18px}to{opacity:1;bottom:31px}}@keyframes mic-pulse{50%{box-shadow:0 0 0 7px #bd615016}}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:1600px){.main-content{padding-top:46px;max-width:1340px}.topbar{padding-left:50px;padding-right:50px}.task-row{min-height:88px}.task-title{font-size:calc(13px*var(--font-scale))}.task-meta{font-size:calc(10px*var(--font-scale))}.task-meta .client-tag{font-size:calc(10px*var(--font-scale))}}
@media(max-width:1200px){:root{--sidebar-w:219px}.sidebar{padding-left:14px;padding-right:14px}.topbar{padding:0 28px;gap:16px}.main-content{padding:31px 28px 100px}.task-right{gap:8px}.task-actions{margin-left:0}.task-meta{gap:8px}.profile-label>span:last-child{display:none}.board-grid{gap:10px}.board-col{padding:9px}}
@media(max-width:1020px){.task-row{gap:11px}.task-actions{opacity:0;max-width:0;overflow:hidden;transition:opacity .2s,max-width .2s}.task-card:hover .task-actions,.task-card:focus-within .task-actions{opacity:1;max-width:60px}.task-due{font-size:calc(9px*var(--font-scale))}.search-open>span:not(.keycap){display:none}.search-open .keycap{margin-left:4px}.connection{font-size:calc(9px*var(--font-scale))}.main-content{padding-left:23px;padding-right:23px}.page-head h1{font-size:var(--page-title-size)}.board-grid{grid-template-columns:1fr 1fr}.board-col:last-child{grid-column:1/-1}.composer-hint{gap:5px;font-size:calc(9px*var(--font-scale))}.composer-hint>.example-hint{max-width:240px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.composer-hint>.dot{display:none}.quiet-footer{font-size:calc(8px*var(--font-scale))}.page-actions .btn{padding:0 12px}}
@media(max-width:760px){:root{--sidebar-w:0px}.sidebar{display:none}.app-shell{padding-left:0}.topbar{height:74px;padding:0 22px;gap:13px;border-bottom:0}.topbar>.workspace-switch,.topbar>.search-open,.topbar>.topbar-rule,.topbar>.profile-label,.topbar>.connection{display:none}.mobile-brand{display:flex;align-items:center;gap:8px}.mobile-brand .brand-mark{width:26px;height:26px;border-radius:8px}.mobile-brand .brand-mark .icon{width:17px;height:17px}.mobile-brand .wordmark{font-size:calc(24px*var(--font-scale))}.mobile-mode{display:flex;align-items:center;gap:7px;margin-left:auto;font-size:calc(10px*var(--font-scale));color:var(--text2);background:var(--surface);border:1px solid var(--line);padding:6px 10px;border-radius:8px;pointer-events:none}.mobile-mode .icon{width:13px;height:13px}.mobile-mode .dot{width:4px;height:4px;background:var(--green)}.main-content{padding:20px 20px 170px}.page-head{margin-bottom:23px;align-items:flex-end}.page-head h1{font-size:var(--page-title-size);letter-spacing:-1.5px}.eyebrow{font-size:calc(9px*var(--font-scale));letter-spacing:1.25px;margin-bottom:11px}.page-description{font-size:calc(11px*var(--font-scale));margin-top:9px}.page-actions{display:none}.view-badge{font-size:calc(10px*var(--font-scale));padding:2px 7px}.page-title-line{gap:11px}.smart-composer{padding:11px 13px;margin-bottom:18px;border-radius:12px}.ai-emblem{width:29px;height:29px;border-radius:8px}.ai-emblem .icon{width:17px;height:17px}.composer-upper{gap:9px}.quick-input{font-size:calc(11px*var(--font-scale));padding:5px 0}.quick-input::placeholder{color:var(--muted)}.composer-tools>.icon-btn{display:none}.composer-submit{width:28px;height:28px;border-radius:8px;margin-left:1px}.composer-submit .icon{width:14px;height:14px}.composer-hint{margin:9px 0 0 38px;font-size:calc(8px*var(--font-scale));gap:4px;align-items:flex-start}.composer-hint>.example-hint{max-width:100%;font-size:calc(8px*var(--font-scale))}.composer-hint>.ai-status{display:none}.toolbar{gap:7px;margin-bottom:17px}.view-tabs{gap:1px}.view-tabs button{font-size:calc(10px*var(--font-scale));padding:6px 8px;gap:5px}.view-tabs button .icon{width:13px;height:13px}.toolbar-actions{gap:5px}.toolbar-control{font-size:calc(9px*var(--font-scale));padding:6px 8px;gap:5px}.toolbar-actions .sort-label{display:none}.toolbar-control .icon{width:13px;height:13px}.toolbar-actions .density-control{display:none}.task-group{margin-bottom:24px}.section-heading{font-size:calc(10px*var(--font-scale));gap:7px;margin-bottom:11px}.section-heading .section-count{font-size:calc(8px*var(--font-scale));line-height:14px}.section-heading .right-label{font-size:calc(8px*var(--font-scale))}.section-heading .subtle-btn{font-size:calc(8px*var(--font-scale))}.task-card{border-radius:11px}.task-row{padding:14px 13px 13px;gap:10px;flex-wrap:wrap;min-height:98px}.task-check{width:17px;height:17px;border-radius:5px;margin-top:2px}.task-body{width:calc(100% - 28px);flex:1}.task-title{font-size:calc(11.5px*var(--font-scale));line-height:1.55;letter-spacing:0}.task-title-wrap{align-items:flex-start;gap:6px}.task-title-wrap>.badge{font-size:calc(8px*var(--font-scale));padding:2px 4px}.task-meta{font-size:calc(8px*var(--font-scale));gap:7px;margin-top:8px;line-height:1.5}.task-meta .icon{width:11px;height:11px}.task-meta .client-tag{font-size:calc(8px*var(--font-scale));padding:1px 5px}.task-meta .meta-dot{display:none}.task-meta .project-tag{font-size:calc(8px*var(--font-scale))}.task-meta .assignee{display:none}.task-meta button{font-size:calc(8px*var(--font-scale));gap:4px}.task-meta .sub-progress{width:22px}.task-right{width:100%;margin-left:27px;align-self:auto;justify-content:space-between;margin-top:-3px;min-height:17px}.task-due{font-size:calc(8px*var(--font-scale));gap:4px}.task-due .icon{width:10px;height:10px}.task-actions{opacity:1;max-width:none;margin-right:-3px;gap:5px;overflow:visible;transition:none}.task-actions .icon-btn{width:22px;height:22px;color:var(--muted)}.task-actions .icon{width:12px;height:12px}.task-list{gap:8px}.subtasks-inline{padding:0 13px 10px 40px}.subtask-row{font-size:calc(10px*var(--font-scale));min-height:31px}.subtask-text{font-size:calc(10px*var(--font-scale))}.subtask-row .task-check{width:14px;height:14px}.subtask-actions{opacity:1}.subtask-actions .icon-btn{width:25px;height:26px}.subtask-children{padding-left:14px}.add-inline{font-size:calc(10px*var(--font-scale));padding:12px 13px;border-radius:10px}.quiet-footer{font-size:calc(8px*var(--font-scale));line-height:1.7;padding:6px 20px;text-align:center;gap:5px;margin-top:17px}.quiet-footer .icon{width:11px;height:11px}.thumb-zone{bottom:calc(18px + env(safe-area-inset-bottom));right:18px;width:calc(50vw - 26px);max-width:185px;display:block;pointer-events:none}.desktop-fab,.desktop-shortcut{display:none}.mobile-dock{display:flex;flex-direction:column;gap:9px;align-items:stretch;pointer-events:auto}.dock-secondary{display:flex;justify-content:flex-end;gap:9px}.dock-secondary button{width:41px;height:41px;border:1px solid var(--line-strong);background:var(--surface);box-shadow:0 5px 18px #25352513;border-radius:13px;display:grid;place-items:center;color:var(--text2)}.dock-secondary button .icon{width:18px;height:18px}.dock-secondary button:last-child{background:var(--surface);color:var(--green)}.dock-add{height:51px;border-radius:14px;box-shadow:0 8px 27px #25352530;background:var(--lime);color:#2d4525;display:flex;align-items:center;justify-content:center;gap:9px;font-size:calc(11px*var(--font-scale));font-weight:600;border:1px solid #9cbb7959}.dock-add .icon{width:19px;height:19px}.thumb-zone:before{content:"";position:absolute;inset:-15px -18px -35px -15px;background:radial-gradient(ellipse at bottom right,var(--bg) 35%,transparent 72%);z-index:-1;pointer-events:none}.popover.thumb-popover{border-radius:13px;min-width:0;max-width:calc(50vw - 22px);width:calc(50vw - 22px);right:14px!important;bottom:calc(16px + var(--keyboard,0px) + env(safe-area-inset-bottom))!important;top:auto!important;left:auto!important;max-height:calc(var(--vvh,100dvh)/3 - 20px);padding:6px;overscroll-behavior:contain;scrollbar-width:thin}.popover button.menu-item{font-size:calc(10px*var(--font-scale));padding:8px;gap:7px;min-height:34px}.popover button.menu-item .icon{width:14px;height:14px}.popover-title{font-size:calc(8px*var(--font-scale));letter-spacing:.9px;padding:7px 8px}.popover .close-menu{display:flex;position:sticky;bottom:-6px;background:var(--surface);border-top:1px solid var(--line);margin-top:3px;justify-content:flex-end;width:100%;padding:8px;font-size:calc(9px*var(--font-scale));gap:5px;align-items:center}.popover .close-menu .icon{width:13px;height:13px}.popover-shade{background:#101c111c;backdrop-filter:blur(1.5px)}.modal-backdrop{padding:0;align-items:flex-end;inset:auto 0 auto 0;top:var(--vv-top,0px);height:var(--vvh,100dvh);background:#0b160f80;backdrop-filter:blur(4px)}.modal,.modal.small,.modal.wide{width:100%;max-height:calc(var(--vvh,100dvh) - 20px);border-radius:21px 21px 0 0;border-bottom:0;animation:mobile-modal-in .4s var(--ease)}.modal-top{padding:18px 20px 14px}.modal-title{font-size:calc(14px*var(--font-scale))}.modal-body{padding:22px 21px 25px;max-height:calc(var(--vvh,100dvh) - 202px)}.modal-footer{padding:13px 18px calc(14px + env(safe-area-inset-bottom));gap:7px;justify-content:flex-end}.modal-footer .footer-note{display:none}.modal-footer .btn{min-height:42px;font-size:calc(10px*var(--font-scale));padding:0 13px}.modal-footer .modal-cancel{padding:0;width:34px;min-width:34px;background:var(--surface2)}.modal-footer .modal-cancel .cancel-text{display:none}.modal-footer .modal-cancel .icon{display:block!important;width:16px;height:16px}.modal-footer .mobile-limit{max-width:calc(50vw - 27px)}.modal-top .icon-btn{width:30px;height:30px}.modal-tabs{padding:0 21px;gap:24px}.modal-tabs button{font-size:calc(10px*var(--font-scale));padding:12px 0}.task-title-input{font-size:calc(22px*var(--font-scale));min-height:73px}.task-description-input{font-size:calc(12px*var(--font-scale));min-height:60px}.field-grid{gap:17px 12px;margin:22px 0}.field-title{font-size:calc(10px*var(--font-scale));margin-bottom:7px}.text-input{font-size:calc(12px*var(--font-scale));padding:10px;border-radius:8px;min-height:42px}.field-grid .field-span{grid-column:1/-1}.date-grid{grid-template-columns:1.35fr 1fr}.detail-heading h2{font-size:calc(21px*var(--font-scale))}.detail-description{font-size:calc(11px*var(--font-scale));margin-top:12px;line-height:1.85}.detail-heading{gap:11px}.detail-heading .task-check{width:19px;height:19px;margin-top:4px}.properties{padding:16px;gap:17px 18px}.property-label{font-size:calc(9px*var(--font-scale))}.property-value{font-size:calc(10px*var(--font-scale))}.detail-section-head{font-size:calc(11px*var(--font-scale))}.subtask-entry input{min-height:38px;font-size:calc(11px*var(--font-scale))}.subtask-entry .btn{min-height:38px}.detail-status .badge{font-size:calc(9px*var(--font-scale))}.comment-meta{font-size:calc(10px*var(--font-scale));flex-wrap:wrap;gap:5px 9px}.comment-content{font-size:calc(11px*var(--font-scale))}.comment-mark{width:25px;height:25px;border-radius:7px}.comment-row{gap:9px;margin-bottom:20px}.comment-compose{padding:11px}.comment-compose textarea{font-size:calc(12px*var(--font-scale));min-height:90px}.comment-compose-bottom .btn{font-size:calc(10px*var(--font-scale));padding:0 10px}.comment-ai-label{display:none}.comment-image{max-width:235px}.ai-notice{font-size:calc(10px*var(--font-scale));padding:10px 11px;gap:8px;line-height:1.8}.modal .keyboard-note{display:none}.modal-crumb{font-size:calc(9px*var(--font-scale))}.settings-section h3{font-size:calc(12px*var(--font-scale))}.settings-section p{font-size:calc(11px*var(--font-scale))}.settings-row strong{font-size:calc(11px*var(--font-scale))}.settings-row small{font-size:calc(9px*var(--font-scale))}.settings-code{font-size:calc(10px*var(--font-scale))}.settings-actions .btn{font-size:calc(10px*var(--font-scale));padding:0 11px;min-height:37px}.manage-tabs button{font-size:calc(9px*var(--font-scale));padding:8px 4px}.manage-row .badge{display:none}.search-box{padding:20px}.search-box input{font-size:calc(14px*var(--font-scale))}.search-results{max-height:calc(var(--vvh,100dvh) - 270px);min-height:210px}.search-result{padding:12px}.search-result-title{font-size:calc(11px*var(--font-scale))}.search-result-meta{font-size:calc(9px*var(--font-scale))}.search-footer{font-size:calc(9px*var(--font-scale));padding:12px 21px}.timeline-header{grid-template-columns:185px repeat(7,minmax(66px,1fr))}.timeline-task-row{grid-template-columns:185px repeat(7,minmax(66px,1fr))}.timeline-task-label{font-size:calc(10px*var(--font-scale));padding:13px 10px}.timeline-controls{font-size:calc(10px*var(--font-scale));gap:6px;justify-content:space-between}.timeline-controls .btn{font-size:calc(9px*var(--font-scale))}.timeline-grid{min-width:715px}.timeline-label{font-size:calc(9px*var(--font-scale));padding:12px 10px}.timeline-task-row{min-height:62px}.timeline-day{padding:9px 4px}.timeline-day strong{font-size:calc(13px*var(--font-scale))}.timeline-board{border-radius:11px}.timeline-cell{min-height:62px}.board-grid{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -20px;padding:0 20px 10px;gap:12px}.board-col{width:calc(100vw - 64px);min-width:calc(100vw - 64px);scroll-snap-align:center;padding:12px}.board-col .task-title{font-size:calc(11px*var(--font-scale))}.board-col .task-row{padding:14px 12px;min-height:98px}.board-col .task-right{margin-left:25px}.board-col .task-meta{font-size:calc(9px*var(--font-scale))}.board-col .task-meta .client-tag{font-size:calc(8px*var(--font-scale))}.board-col .task-check{width:17px;height:17px}.toast{bottom:calc(141px + var(--keyboard,0px) + env(safe-area-inset-bottom));left:50%;width:max-content;max-width:calc(100vw - 28px);padding:11px 13px;font-size:calc(10px*var(--font-scale));gap:8px;animation:fade-in .25s}.toast button{font-size:calc(10px*var(--font-scale))}.toast>.icon{width:15px;height:15px}.density-compact .task-row{min-height:87px;padding-top:12px;padding-bottom:10px}.mobile-only{display:block}.desktop-only{display:none!important}.mobile-task-switch{display:flex;gap:4px;margin-right:3px}.mobile-task-switch button{width:32px;height:35px;border-radius:8px;background:var(--surface2);color:var(--muted);display:grid;place-items:center}.mobile-task-switch button.active{background:var(--mint);color:var(--green)}.mobile-task-switch .icon{width:16px;height:16px}.detail-footer .btn{padding:0 12px}.detail-footer .desktop-only{display:none}.detail-footer{flex-wrap:wrap;justify-content:flex-end}.detail-footer .icon-btn{width:33px;height:38px}.detail-footer .btn-primary{min-width:92px}.detail-footer .footer-action-zone{display:flex;flex-direction:column;align-items:flex-end;gap:8px;max-width:calc(50vw - 18px)}.detail-footer .footer-action-row{display:flex;gap:6px;justify-content:flex-end}.detail-footer .mobile-task-switch{margin:0}.empty-state{padding:41px 17px}.empty-state h3{font-size:calc(15px*var(--font-scale))}.empty-state p{font-size:calc(11px*var(--font-scale))}.filter-chips{gap:5px}.filter-chip{font-size:calc(9px*var(--font-scale));padding:5px 7px}}
@media(max-width:365px){.main-content{padding-left:16px;padding-right:16px}.topbar{padding:0 17px}.thumb-zone{right:14px;width:calc(50vw - 22px)}.dock-secondary{gap:7px}.dock-secondary button{width:38px;height:38px}.dock-add{font-size:calc(10px*var(--font-scale));gap:5px}.task-meta{gap:6px}.page-head h1{font-size:var(--page-title-size)}.composer-hint{font-size:calc(7px*var(--font-scale))}.toolbar-control{font-size:calc(8px*var(--font-scale))}.view-tabs button{font-size:calc(9px*var(--font-scale))}}
@keyframes mobile-modal-in{from{opacity:0;transform:translateY(45px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* v1.1 — task trees in the main list. All colours follow the existing theme. */
.task-card .task-row{gap:10px;align-items:flex-start}
.task-card .root-toggle{margin-top:-4px;margin-left:-6px}
.tree-toggle,.tree-toggle-spacer{display:inline-flex;align-items:center;justify-content:center;width:28px;min-width:28px;height:30px;flex-shrink:0;border-radius:7px;color:var(--muted);padding:0}
.tree-toggle:hover{background:var(--mint);color:var(--green)}
.tree-toggle .icon{width:15px;height:15px;transition:transform .22s var(--ease)}
.tree-toggle.is-open .icon{transform:rotate(90deg)}
.tree-toggle-spacer>span{width:4px;height:4px;border-radius:50%;background:var(--line-strong)}
.task-card.has-tree>.task-row{background:linear-gradient(110deg,var(--surface),var(--surface2))}
.task-card.has-tree:hover{transform:none}

.task-card .task-actions,.task-card:hover .task-actions,.task-card:focus-within .task-actions{opacity:1;max-width:none;overflow:visible;gap:1px}
.task-card .task-actions .icon-btn{width:29px;height:31px}
.task-card .task-actions .icon{width:16px;height:16px}
.task-card .task-actions .root-more{display:none}
.task-card .task-right{gap:12px}
.task-card .root-add-subtask{color:var(--green)}
.task-meta .root-sub-progress{color:var(--green);font-variant-numeric:tabular-nums}
.list-tree-panel{--tree-step:23px;position:relative;border-top:1px solid var(--line);padding:7px 0 5px;background:var(--surface);animation:tree-appear .28s var(--ease)}
.task-tree-branch{list-style:none;padding:0;margin:0;min-width:0;animation:tree-appear .26s var(--ease)}
.task-tree-node{--tree-level:var(--depth-desktop);position:relative;margin:0;padding:0;min-width:0}
.tree-connector{position:absolute;pointer-events:none;left:calc(22px + (var(--tree-level) - 1)*var(--tree-step));top:0;bottom:0;width:calc(var(--tree-step) - 3px);z-index:1}
.tree-connector:before{content:"";position:absolute;left:0;top:0;bottom:0;border-left:1px solid var(--line-strong);opacity:.7}
.tree-connector:after{content:"";position:absolute;top:25px;left:0;width:100%;border-top:1px solid var(--line-strong);opacity:.7}
.task-tree-node:last-child>.tree-connector:before{bottom:auto;height:25px}
.task-tree-row{display:grid;grid-template-columns:28px 20px minmax(0,1fr) auto;align-items:start;column-gap:8px;min-height:66px;padding:10px 14px 10px calc(13px + var(--tree-level)*var(--tree-step));position:relative;border-radius:7px;transition:background .18s}
.task-tree-row:hover,.task-tree-row:focus-within{background:var(--surface2)}
.task-tree-row>.task-check{margin:6px 0 0;width:18px;height:18px}
.task-tree-row .task-check.done{background:var(--green);border-color:var(--green)}
.task-tree-row>.tree-toggle,.task-tree-row>.tree-toggle-spacer{margin-top:0}
.tree-node-body{min-width:0;padding-top:3px}
.tree-title-line{display:flex;align-items:center;flex-wrap:wrap;gap:5px 9px;min-width:0}
.tree-task-title{font-size:calc(12px*var(--font-scale));line-height:1.6;font-weight:500;letter-spacing:.02px;text-align:left;padding:0;min-width:0;overflow-wrap:anywhere}
.tree-task-title:hover{color:var(--green)}
.task-tree-row.is-done .tree-task-title{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px;text-decoration-color:var(--line-strong)}
.tree-count{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;font-size:calc(9px*var(--font-scale));line-height:1.4;color:var(--green);padding:2px 5px;background:var(--mint);border-radius:5px;font-variant-numeric:tabular-nums}
.tree-mini-progress{height:3px;width:23px;background:var(--line);border-radius:3px;overflow:hidden;display:block}
.tree-mini-progress i{display:block;background:var(--green);height:100%;border-radius:3px;transition:width .35s}
.tree-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px 11px;font-size:calc(9px*var(--font-scale));color:var(--muted);margin-top:5px;line-height:1.5}
.tree-meta>span,.tree-meta>button{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:100%;overflow-wrap:anywhere}
.tree-meta>button{font-size:inherit;padding:0}
.tree-meta .icon{width:11px;height:11px;stroke-width:1.7}
.tree-meta .tree-client{color:var(--text2)}
.tree-meta .tree-project{color:var(--muted)}
.tree-meta .tree-date-mobile{display:none}
.tree-node-right{display:flex;align-items:center;align-self:center;gap:12px;margin-left:8px}
.tree-date{display:inline-flex;align-items:center;gap:5px;color:var(--text2);font-size:calc(9px*var(--font-scale));white-space:nowrap;font-variant-numeric:tabular-nums}
.tree-date>.icon{width:12px;height:12px}
.tree-node-actions{display:flex;align-items:center;gap:1px}
.tree-node-actions .icon-btn{width:29px;height:30px;color:var(--muted)}
.tree-node-actions .icon{width:15px;height:15px}
.tree-node-actions .tree-add-button{color:var(--green)}
.tree-node-actions .tree-more-button{display:none}
.tree-depth-label{display:none;font-size:calc(8px*var(--font-scale));background:var(--surface3);color:var(--muted);padding:1px 4px;border-radius:4px;font-variant-numeric:tabular-nums}
.tree-context-label{font-size:calc(8px*var(--font-scale));font-weight:500;color:var(--muted);background:var(--surface2);padding:2px 5px;border:1px solid var(--line);border-radius:5px;white-space:nowrap}
.is-context-card>.task-row .task-title{color:var(--text2)}
.tree-add-row{display:flex;align-items:center;gap:8px;margin:5px 14px 5px 54px;padding:9px 10px;border-radius:8px;font-size:calc(10px*var(--font-scale));color:var(--muted);text-align:left;width:calc(100% - 68px)}
.tree-add-row>.icon{width:14px;height:14px;color:var(--green)}
.tree-add-row>span{font-size:calc(8px*var(--font-scale));margin-left:auto;color:var(--muted);opacity:0;transition:opacity .18s}
.tree-add-row:hover,.tree-add-row:focus-visible{color:var(--green);background:var(--mint)}
.tree-add-row:hover>span,.tree-add-row:focus-visible>span{opacity:1}
.tree-inline-form{--tree-level:var(--depth-desktop);display:grid;grid-template-columns:23px minmax(0,1fr) 32px 30px;align-items:center;gap:7px;margin:7px 14px 10px calc(13px + var(--tree-level)*var(--tree-step));padding:7px;border:1px solid var(--green);border-radius:10px;background:var(--surface2);box-shadow:0 0 0 3px var(--mint)}
.tree-inline-form .text-input{min-width:0;width:100%;font-size:calc(12px*var(--font-scale));padding:6px 3px;min-height:30px;background:transparent;border:0;box-shadow:none;outline:0}
.tree-inline-form .icon-btn{width:30px;height:30px}
.tree-inline-form .tree-save{background:var(--green);color:var(--surface)}
[data-theme=dark] .tree-inline-form .tree-save{color:#20321f}
.tree-entry-symbol{display:grid;place-items:center;color:var(--green)}
.tree-entry-symbol .icon{width:16px;height:16px}
.tree-toolbar-control{color:var(--green)}
.tree-toolbar-control .icon{width:16px;height:16px}
.tree-date.red,.tree-meta .red{color:var(--red)}
.task-tree-row.is-overdue .tree-task-title{color:var(--text)}
.density-compact .task-tree-row{min-height:51px;padding-top:7px;padding-bottom:6px}
.density-compact .tree-connector:after{top:22px}
.density-compact .task-tree-node:last-child>.tree-connector:before{height:22px}
.board-col .list-tree-panel{--tree-step:10px}
.board-col .task-row{gap:6px}
.board-col .task-body{flex:1;min-width:0;width:auto}
.board-col .tree-node-right{margin-left:0}
.board-col .tree-date,.board-col .tree-node-actions .tree-desktop-action,.board-col .tree-node-actions .tree-add-button{display:none}
.board-col .tree-meta .tree-date-mobile{display:inline-flex}
.board-col .tree-node-actions .tree-more-button{display:inline-flex}
.board-col .task-tree-row{grid-template-columns:22px 17px minmax(0,1fr) 24px;column-gap:4px;padding-right:7px;padding-left:calc(6px + var(--tree-level)*var(--tree-step))}
.board-col .tree-toggle,.board-col .tree-toggle-spacer{width:22px;min-width:22px}
.board-col .tree-node-actions .icon-btn{width:24px}
.board-col .tree-connector{left:calc(11px + (var(--tree-level) - 1)*var(--tree-step))}
.board-col .tree-meta{font-size:calc(8px*var(--font-scale));gap:4px 7px}
.board-col .tree-task-title{font-size:calc(11px*var(--font-scale))}
.board-col .tree-mini-progress{display:none}
.board-col .tree-inline-form{grid-template-columns:minmax(0,1fr) 30px 26px;margin-left:14px;gap:3px}
.board-col .tree-entry-symbol{display:none}
.board-col .tree-add-row{margin-left:20px;width:calc(100% - 32px)}
@keyframes tree-appear{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:761px) and (max-width:1200px){

 .tree-node-right{gap:3px}
 .tree-node-actions .tree-desktop-action{display:none}
 .tree-node-actions .tree-more-button{display:inline-flex}
 .tree-toolbar-control>span{display:none}
 .list-tree-panel{--tree-step:18px}
}
@media(max-width:760px){
 .task-card .task-row{gap:7px;padding:13px 11px 11px;min-height:100px}
 .task-card .root-toggle{margin-left:-4px;margin-top:-5px}
 .task-card .task-body{width:auto;flex:1}
 .task-card .task-title{font-size:calc(12px*var(--font-scale));line-height:1.65}
 .task-card .task-title-wrap{flex-wrap:wrap;gap:4px}
 .task-card .task-check{width:18px;height:18px;position:relative}
 .task-card .task-check:after{content:"";position:absolute;inset:-6px}
 .task-card>.task-row>.task-check{margin-top:3px}
 .task-card .task-meta{font-size:calc(9px*var(--font-scale));gap:5px 8px;margin-top:5px}
 .task-card .task-meta .assignee{display:inline-flex}
 .task-card .task-meta .project-tag{font-size:calc(9px*var(--font-scale))}
 .task-card .task-meta .client-tag{font-size:calc(9px*var(--font-scale))}
 .task-card .task-meta button{font-size:calc(9px*var(--font-scale))}
 .task-card .task-right{width:100%;margin-left:57px;justify-content:space-between;margin-top:0;gap:5px}
 .task-card .task-due{font-size:calc(9px*var(--font-scale))}
 .task-card .task-actions{gap:3px;margin:0}
 .task-card .task-actions .icon-btn{width:30px;height:30px}
 .task-card .task-actions .root-delete,.task-card .task-actions .root-add-subtask{display:none}
 .task-card .task-actions .root-more{display:inline-flex}
 .task-card .task-actions .icon{width:15px;height:15px}
 .list-tree-panel{--tree-step:12px;padding-top:6px;padding-bottom:4px}
 .task-tree-node{--tree-level:var(--depth-mobile)}
 .task-tree-row{grid-template-columns:24px 21px minmax(0,1fr) 30px;column-gap:5px;min-height:78px;padding:10px 8px 10px calc(8px + var(--tree-level)*var(--tree-step))}
 .task-tree-row>.task-check{margin-top:6px}
 .tree-toggle,.tree-toggle-spacer{width:27px;min-width:27px;height:31px}
 .task-tree-row .tree-toggle,.task-tree-row .tree-toggle-spacer{width:24px;min-width:24px}
 .tree-connector{left:calc(14px + (var(--tree-level) - 1)*var(--tree-step));width:calc(var(--tree-step) - 1px)}
 .tree-connector:after{top:25px}
 .tree-title-line{gap:4px 6px}
 .tree-task-title{font-size:calc(11.5px*var(--font-scale));line-height:1.65}
 .tree-node-body{padding-top:3px}
 .tree-node-right{align-self:start;margin-left:0;padding-top:0}
 .tree-date{display:none}
 .tree-node-actions .tree-add-button,.tree-node-actions .tree-desktop-action{display:none}
 .tree-node-actions .tree-more-button{display:inline-flex;width:30px;height:32px}
 .tree-node-actions .icon{width:16px;height:16px}
 .tree-meta{font-size:calc(9px*var(--font-scale));gap:4px 7px;margin-top:4px;line-height:1.5}
 .tree-meta .tree-project{flex-basis:100%}
 .tree-meta .tree-date-mobile{display:inline-flex}
 .tree-meta .icon{width:10px;height:10px}
 .tree-count{font-size:calc(8px*var(--font-scale));padding:1px 4px;gap:4px}
 .tree-mini-progress{width:17px;height:2px}
 .tree-depth-label{display:inline-flex}
 .tree-context-label{font-size:calc(7px*var(--font-scale))}
 .tree-add-row{margin:2px 9px 3px 53px;width:calc(100% - 62px);padding:10px 3px;font-size:calc(10px*var(--font-scale))}
 .tree-add-row>span{display:none}
 .tree-inline-form{--tree-level:var(--depth-mobile);grid-template-columns:minmax(0,1fr) 31px 27px;margin:8px 9px 10px calc(9px + var(--tree-level)*var(--tree-step));gap:4px;padding:6px}
 .tree-inline-form .text-input{font-size:calc(16px*var(--font-scale));line-height:1.4;min-height:35px;padding:3px 4px}
 .tree-inline-form .text-input::placeholder{font-size:calc(11px*var(--font-scale))}
 .tree-inline-form .icon-btn{width:29px;height:34px}
 .tree-inline-form .tree-entry-symbol{display:none}
 .tree-inline-form .icon{width:15px;height:15px}
 .tree-toolbar-control>span{display:none}
 .tree-toolbar-control{width:27px;min-height:30px;padding:0;justify-content:center}
 .toolbar-actions{gap:5px}
 .density-compact .task-tree-row{min-height:66px;padding-top:8px;padding-bottom:7px}
 .board-col .task-card .task-right{margin-left:50px}
 .board-col .task-tree-row{padding-left:calc(5px + var(--tree-level)*10px)}
}
@media(max-width:365px){
 .list-tree-panel{--tree-step:9px}
 .task-tree-row{column-gap:3px;padding-right:4px;grid-template-columns:23px 19px minmax(0,1fr) 27px}
 .tree-node-actions .tree-more-button{width:27px}
 .tree-task-title{font-size:calc(11px*var(--font-scale))}
 .tree-meta .tree-client{display:none}
 .task-card .task-title{font-size:calc(11.5px*var(--font-scale))}
 .task-card .task-meta .project-tag{font-size:calc(8px*var(--font-scale))}
 .tree-meta{font-size:calc(8px*var(--font-scale))}
 .tree-mini-progress{display:none}
 .tree-inline-form{margin-left:10px;grid-template-columns:minmax(0,1fr) 29px 26px}
}

/* Keep very deep branches identifiable even when their visual indent is capped. */
.tree-depth-label{display:inline-flex}

/* v1.2 · layout and form tokens shared by every view, theme and workspace. */
.page-title-line h1{font-size:var(--page-title-size);font-weight:var(--page-title-weight);letter-spacing:-.85px;line-height:1.2}
.page-title-line .view-badge{font-size:calc(11px*var(--font-scale));min-width:28px;padding:3px 8px}
.sidebar .nav-heading{padding-bottom:7px}
.sidebar .group-heading>button:first-child{line-height:1.2}
.sidebar .sidebar-mini{padding-block:5px}
.sidebar .sidebar-credit{margin-top:7px}
.smart-composer:focus-within{border-color:var(--green);box-shadow:none}
.btn-primary,[data-theme=dark] .btn-primary{color:var(--on-primary)}
.dock-add,.desktop-fab{color:var(--accent-ink)}
.task-check.done,[data-theme=dark] .task-check.done{color:var(--on-primary)}
.task-card>.task-row{display:grid;grid-template-columns:18px 21px minmax(0,1fr) max-content;gap:10px;align-items:start;min-height:78px;padding:14px 17px}
.task-card>.task-row>.task-body{width:auto;min-width:0}
.task-card>.task-row>.task-right{display:flex;flex-direction:column;align-items:flex-end;align-self:stretch;justify-content:space-between;width:auto;min-height:49px;margin:0 0 0 9px;gap:6px}
.task-card>.task-row>.task-right .task-due{margin-top:2px;line-height:20px;font-size:calc(10px*var(--font-scale))}
.task-card>.task-row>.task-right .task-actions{margin:0 -4px -4px 0;justify-content:flex-end}
.density-compact .task-card>.task-row{padding-block:10px;min-height:70px}
.board-col .task-card>.task-row{position:relative;grid-template-columns:16px 19px minmax(0,1fr);padding:35px 11px 10px;gap:6px}
.board-col .task-card>.task-row>.task-right{display:contents}
.board-col .task-card>.task-row .task-due{position:absolute;top:8px;right:13px;margin:0;font-size:calc(9px*var(--font-scale))}
.board-col .task-card>.task-row .task-actions{grid-column:3;justify-self:end;margin:0}
.text-input:focus,.text-input:focus-visible{outline:none;box-shadow:none;border:1px solid var(--green)}
.comment-compose textarea:focus,.comment-compose textarea:focus-visible,.quick-input:focus{outline:none!important;box-shadow:none!important;border:none!important}
.comment-compose:focus-within{border-width:1px;border-color:var(--green);box-shadow:none}
.editable-task-form .task-title-input{border:1px solid var(--line);border-radius:9px;padding:8px 10px;min-height:42px;font-size:calc(22px*var(--font-scale));line-height:1.3;background:var(--bg);font-weight:600;display:block;letter-spacing:-.5px;overflow:hidden}
.editable-task-form .task-description-input{border:1px solid var(--line);border-radius:9px;padding:9px 11px;min-height:64px;display:block;background:var(--bg)}
.editable-task-form .task-title-input:focus,.editable-task-form .task-description-input:focus{outline:none;border-color:var(--green);box-shadow:none}
.editable-task-form .description-label{margin-top:14px}
.editable-task-form .field-grid{margin:18px 0;gap:15px 18px}
.task-editor-modal .detail-status{align-items:center;margin-bottom:17px}
.detail-status .task-check{margin:0;width:19px;height:19px}
.editor-mode-note{font-size:calc(10px*var(--font-scale));color:var(--muted);margin-left:auto}
.footer-action-zone{display:flex;gap:8px}.footer-action-row{display:flex;gap:8px;align-items:center;justify-content:flex-end}
.attachments-section{margin:18px 0 22px;padding-top:15px;border-top:1px solid var(--line)}
.attachments-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.attachments-heading>span{display:flex;align-items:center;gap:7px;font-size:calc(12px*var(--font-scale));font-weight:600}
.attachment-tools{display:flex;gap:6px}.attachment-tools .btn{font-size:calc(11px*var(--font-scale));min-height:33px;padding:0 10px;gap:6px}
.attachment-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:10px 0}
.attachment-item{display:flex;align-items:center;border:1px solid var(--line);background:var(--bg);border-radius:9px;min-width:0;overflow:hidden}
.attachment-open{display:flex;align-items:center;gap:9px;flex:1;min-width:0;padding:9px;text-align:left}
.attachment-open:hover{background:var(--surface2)}
.attachment-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.attachment-info strong{font-size:calc(11px*var(--font-scale));font-weight:500;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
.attachment-info small{font-size:calc(9px*var(--font-scale));color:var(--muted)}
.attachment-thumb{display:grid;place-items:center;position:relative;width:35px;height:37px;flex-shrink:0;border-radius:6px;background:var(--surface2);color:var(--text2);overflow:hidden}
.attachment-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.attachment-image[hidden]{display:none}
.attachment-item>.icon-btn{width:26px;margin-right:4px}
/* Просмотр вложения: файл открывается в окне, скачивание остаётся кнопкой внутри. */
.file-preview-modal{width:760px}
.file-preview{display:flex;align-items:center;justify-content:center;min-height:150px;background:var(--bg);border:1px solid var(--line);border-radius:12px;overflow:auto}
.file-preview img{display:block;max-width:100%;max-height:calc(var(--vvh,100dvh) - 260px);object-fit:contain}
.file-preview iframe{display:block;width:100%;height:calc(var(--vvh,100dvh) - 260px);min-height:300px;border:0;background:var(--surface)}
.file-preview audio,.file-preview video{display:block;width:100%;max-height:calc(var(--vvh,100dvh) - 260px);padding:14px}
.file-preview-text{margin:0;padding:14px 16px;width:100%;max-height:calc(var(--vvh,100dvh) - 260px);overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font:inherit;font-size:calc(11px*var(--font-scale));line-height:1.65;color:var(--text2)}
.file-preview-note{display:flex;align-items:center;gap:10px;margin:0;padding:18px 16px;color:var(--muted);font-size:calc(11px*var(--font-scale))}
.file-preview-note .icon{width:18px;height:18px;flex-shrink:0;color:var(--text2)}
@media(max-width:760px){
 .file-preview-modal{width:100%}
 .file-preview img,.file-preview audio,.file-preview video,.file-preview-text{max-height:calc(var(--vvh,100dvh) - 215px)}
 .file-preview iframe{height:calc(var(--vvh,100dvh) - 215px);min-height:240px}
}
.reschedule-badge{font-size:calc(9px*var(--font-scale));margin-bottom:7px;background:var(--mint);color:var(--green)}
.reschedule-task-label{display:flex;gap:12px;align-items:flex-start;font-size:calc(13px*var(--font-scale));margin-bottom:17px}.reschedule-task-label>.icon{color:var(--green);margin-top:2px}
.reschedule-summary{border:1px solid var(--line);background:var(--bg);border-radius:11px;padding:13px;display:grid;grid-template-columns:1fr 20px 1fr;gap:4px 12px;align-items:center;margin-bottom:20px}
.reschedule-summary>span{font-size:calc(10px*var(--font-scale));color:var(--muted)}.reschedule-summary>strong{font-size:calc(12px*var(--font-scale));font-weight:500;grid-column:1;grid-row:2}.reschedule-summary>.icon{grid-row:1/3;grid-column:2;color:var(--muted)}.reschedule-summary>span:nth-of-type(2){grid-column:3;grid-row:1}.reschedule-summary>strong:last-child{grid-column:3;grid-row:2}
.reschedule-text{resize:vertical;min-height:108px;line-height:1.7}
.keep-times{font-size:calc(11px*var(--font-scale));display:flex;gap:8px;align-items:center;margin-top:12px;color:var(--text2)}
.accent-picker{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:3px}
.accent-choice{width:30px;height:30px;border-radius:50%;background:var(--swatch);color:var(--swatch-ink);display:grid;place-items:center;position:relative;border:3px solid var(--surface)}
.accent-choice.selected:after{content:'';position:absolute;inset:-4px;border:1px solid var(--swatch);border-radius:50%}
.accent-choice .icon{width:14px;height:14px;stroke-width:2.2}
.accent-choice:hover{transform:translateY(-2px)}
.api-settings-section h3{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.api-key-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}
.api-key-row>.btn{font-size:calc(11px*var(--font-scale));gap:7px;padding-inline:12px}
.api-model-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:17px}
.api-model-grid select{width:100%;min-width:0;font-size:calc(11px*var(--font-scale));text-overflow:ellipsis}
.api-feedback{font-size:calc(11px*var(--font-scale));color:var(--green);margin:12px 0;min-height:0;line-height:1.65}.api-feedback:empty{display:none}.api-feedback.is-error{color:var(--red)}
.api-settings-actions{gap:7px!important;flex-wrap:wrap}
.api-key-row input{min-width:0}.api-settings-section :disabled{cursor:not-allowed}
.comment-compose-bottom .icon-btn{width:31px}.comment-compose-bottom{gap:4px}
@media(max-width:760px){
 .page-title-line h1{font-size:calc(30px*var(--font-scale));font-weight:600;letter-spacing:-.85px}
 .task-card>.task-row,.density-compact .task-card>.task-row{position:relative;grid-template-columns:18px 19px minmax(0,1fr);gap:7px;padding:33px 12px 10px;min-height:90px}
 .task-card>.task-row>.task-right{display:contents}
 .task-card>.task-row>.task-right .task-due{position:absolute;right:13px;top:7px;line-height:18px;margin:0;font-size:calc(9px*var(--font-scale))}
 .task-card>.task-row>.task-right .task-actions{grid-column:3;justify-self:end;margin:-3px -2px -3px 0}
 .task-card>.task-row>.task-body{grid-column:3;min-width:0}
 .board-col .task-card>.task-row{grid-template-columns:16px 18px minmax(0,1fr)}
 .editable-task-form .task-title-input{font-size:calc(20px*var(--font-scale));min-height:41px}
 .editable-task-form .task-description-input{font-size:calc(12px*var(--font-scale))}
 .editor-mode-note{font-size:calc(8px*var(--font-scale))}.task-editor-modal .modal-body{padding-top:18px}
 .attachment-list{grid-template-columns:1fr}
 .attachments-heading{gap:6px}.attachments-heading>span{font-size:calc(11px*var(--font-scale))}.attachment-tools{gap:4px}.attachment-tools .btn{min-height:35px;font-size:calc(10px*var(--font-scale));padding-inline:8px}
 .accent-settings-row{align-items:flex-start!important;flex-direction:column;gap:10px!important}
 .accent-picker{gap:10px}.accent-choice{width:32px;height:32px}
 .api-key-row{grid-template-columns:1fr}.api-key-row>.btn{justify-self:end;min-height:38px}
 .api-model-grid{grid-template-columns:1fr;gap:14px}.api-model-grid select{font-size:calc(12px*var(--font-scale))}
 .api-settings-actions{justify-content:flex-end}
 .comment-compose-bottom{gap:3px;justify-content:flex-end}
 .comment-compose-bottom .icon-btn{width:36px;height:38px}
 .reschedule-summary{padding:11px;gap:4px 8px}.reschedule-summary>strong{font-size:calc(11px*var(--font-scale))}
 .reschedule-task-label{font-size:calc(12px*var(--font-scale))}.reschedule-text{font-size:calc(13px*var(--font-scale))}
}
@media(pointer:coarse){.sidebar .nav-item{min-height:40px}.sidebar .dynamic-row{min-height:36px}}

.footer-action-row.mobile-only{display:none}
@media(max-width:760px){.footer-action-row.mobile-only{display:flex}}

/* The dialog shell is focused for keyboard trapping, not a form control. */
.modal:focus{outline:none}

/* v1.3: spatially uniform metadata and subdued radial background, never a linear gradient. */
:root{--meta-gap:12px;--bg:#f5f6f4}
[data-theme=dark]{--bg:#191d1b}
body{background-color:var(--bg)}
/* Фон — отдельный слой ровно с окно, а не фон тела документа. На телефонах
   background-attachment:fixed не поддерживается, поэтому градиенты растягивались
   по высоте содержимого: на короткой странице фон не доходил до низа окна, а на
   длинной уезжал при прокрутке. Слой с position:fixed всегда равен окну. */
body::before{content:"";position:fixed;top:0;left:0;width:100%;height:100vh;height:100lvh;z-index:-1;pointer-events:none;background-image:radial-gradient(ellipse at 15% 16%,rgba(184,185,179,.16),transparent 50%),radial-gradient(ellipse at 88% 55%,rgba(163,174,167,.10),transparent 48%),radial-gradient(ellipse at 45% 95%,rgba(199,191,173,.10),transparent 55%)}
[data-theme=dark] body::before{background-image:radial-gradient(ellipse at 12% 22%,rgba(162,163,157,.06),transparent 48%),radial-gradient(ellipse at 86% 48%,rgba(181,185,182,.045),transparent 50%),radial-gradient(ellipse at 53% 95%,rgba(137,134,121,.045),transparent 48%)}
.task-meta,.tree-meta{column-gap:var(--meta-gap)!important;row-gap:4px}
.task-meta>span,.task-meta>button,.tree-meta>span,.tree-meta>button{gap:5px;margin:0;padding:0;border:0;line-height:18px;min-height:18px;background:transparent}
.task-meta .client-tag{background:transparent;border-radius:0;padding:0}
.task-meta .icon,.tree-meta .icon{width:13px;height:13px}
.task-meta .meta-dot{display:none}
.task-meta .root-sub-progress{gap:5px}
.task-meta .project-tag{max-width:none}
.accent-settings-row{align-items:flex-start;gap:18px}
.accent-picker{display:grid;grid-template-columns:repeat(7,30px);gap:9px;flex-shrink:0}
.accent-choice{width:30px;height:30px}
.accent-settings-row small{max-width:180px}
/* Checkbox-based multi-select: no Ctrl/Cmd required. */
.assignee-select{position:relative;min-width:0;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)}
.assignee-select summary{display:flex;align-items:center;gap:9px;min-height:42px;padding:9px 11px;cursor:pointer;list-style:none;font-size:calc(12px*var(--font-scale))}
.assignee-select summary::-webkit-details-marker{display:none}
.assignee-select summary .icon{width:16px;height:16px;color:var(--muted)}
.assignee-select summary .icon:last-child{margin-left:auto;width:13px}
.assignee-select summary span{flex:1;min-width:0;white-space:normal;overflow-wrap:anywhere}
.assignee-select[open]{border-color:var(--green)}
.assignee-options{max-height:210px;overflow:auto;border-top:1px solid var(--line);padding:5px 7px}
.assignee-options label{display:flex;align-items:center;gap:10px;min-height:34px;padding:5px 8px;border-radius:6px;cursor:pointer;font-size:calc(12px*var(--font-scale))}
.assignee-options label:hover{background:var(--mint)}
.assignee-options input{accent-color:var(--green);width:15px;height:15px;flex-shrink:0}
.assignee-options-footer{padding:6px 8px 3px;font-size:calc(10px*var(--font-scale));color:var(--muted)}
/* Rich text: a single one-pixel focus line, allowlisted markup only. */
.rich-editor{border:1px solid var(--line-strong);border-radius:10px;overflow:hidden;background:var(--bg)}
.rich-editor:focus-within{border-color:var(--green)}
.rich-toolbar{display:flex;align-items:center;gap:3px;padding:5px 7px;border-bottom:1px solid var(--line);background:var(--surface)}
.rich-toolbar button{display:grid;place-items:center;min-width:30px;height:29px;border-radius:5px;color:var(--text2);font-size:calc(12px*var(--font-scale))}
.rich-toolbar button:nth-child(4){margin-left:7px}
.rich-toolbar button:hover,.rich-toolbar button.active{background:var(--mint);color:var(--green)}
.rich-toolbar .icon{width:15px;height:15px}
.rich-input{min-height:92px;max-height:300px;overflow:auto;padding:12px;outline:none!important;border:0!important;box-shadow:none!important;line-height:1.75;font-size:calc(13px*var(--font-scale));overflow-wrap:anywhere;white-space:pre-wrap}
.rich-input:empty:before{content:attr(data-placeholder);color:var(--muted);pointer-events:none}
.rich-content{white-space:normal;overflow-wrap:anywhere}
.rich-content p,.rich-input p{margin:0 0 7px}
.rich-content ul,.rich-content ol,.rich-input ul,.rich-input ol{padding-left:24px;margin:7px 0}
.rich-content li,.rich-input li{padding-left:2px}
.rich-content strong,.rich-input strong{font-weight:700}
.rich-editor textarea[hidden]{display:none!important}
.comment-compose>.rich-editor{border:0;background:transparent}
.comment-compose .rich-toolbar{background:transparent;padding-top:0}
.comment-compose .rich-input{padding:10px 2px;min-height:90px}
.comment-meta{align-items:center;gap:8px;flex-wrap:wrap}
.comment-meta>strong{font-weight:550}
.comment-actions{display:flex;align-items:center;gap:3px;margin-left:auto;flex-shrink:0}
.comment-actions .icon-btn{width:28px;height:27px}
.comment-actions .icon{width:14px;height:14px}
.comment-edit-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:8px}
.comment-edit-actions .btn{font-size:calc(11px*var(--font-scale));min-height:34px}
.edited-label{font-size:calc(9px*var(--font-scale));color:var(--muted)}
.comment-row{padding-bottom:16px}
/* Weekly hover tooltip and a drill-down day view with full hour axis. */
.timeline-day{cursor:pointer;transition:background .18s}
.timeline-day:hover,.timeline-day:focus-visible{background:var(--mint);color:var(--green)}
.task-tooltip{position:fixed;z-index:500;max-width:min(420px,calc(100vw - 20px));padding:11px 14px;border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);color:var(--text);box-shadow:var(--shadow-float);font-size:calc(12px*var(--font-scale));line-height:1.55;overflow-wrap:anywhere;pointer-events:none;animation:tooltip-in .13s ease-out}
@keyframes tooltip-in{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}
.day-toolbar{gap:10px}
.day-toolbar .timeline-controls{margin-right:auto;gap:7px}
.day-toolbar .timeline-controls strong{font-size:calc(13px*var(--font-scale));font-weight:550}
.day-agenda{border:1px solid var(--line);border-radius:15px;background:var(--surface);overflow:hidden}
.day-agenda-title{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line);font-size:calc(12px*var(--font-scale));font-weight:550}
.day-agenda-title>span:first-child{display:flex;align-items:center;gap:9px;text-transform:capitalize}
.day-agenda-title .icon{color:var(--green);width:16px}
.day-agenda-scroll{max-height:min(64dvh,660px);min-height:300px;overflow:auto;position:relative;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}
.agenda-hour{display:grid;grid-template-columns:68px minmax(0,1fr);min-height:66px}
.agenda-hour-label{font-size:calc(11px*var(--font-scale));font-variant-numeric:tabular-nums;color:var(--muted);text-align:right;padding:12px 15px 0 0}
.agenda-hour-content{position:relative;display:flex;flex-direction:column;gap:6px;border-left:1px solid var(--line);border-bottom:1px solid var(--line);min-height:66px;padding:8px 12px}
.agenda-hour.is-current>.agenda-hour-label{color:var(--green);font-weight:600}
.agenda-event{border:1px solid var(--line);border-left:3px solid var(--green);background:var(--surface2);text-align:left;border-radius:8px;padding:10px 12px;position:relative;z-index:1}
.agenda-event:hover{background:var(--mint);border-color:var(--green)}
.agenda-event.overdue{border-left-color:var(--red)}
.agenda-event.done{opacity:.65}.agenda-event.done strong{text-decoration:line-through}
.agenda-event-top{display:flex;align-items:flex-start;gap:10px}
.agenda-event-top time{font-size:calc(10px*var(--font-scale));color:var(--green);min-width:32px;line-height:20px}
.agenda-event-top strong{font-size:calc(12px*var(--font-scale));font-weight:550;line-height:20px;flex:1}
.agenda-event-top>.icon{width:13px;height:15px;margin-top:2px;color:var(--green)}
.agenda-event-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px 12px;margin-top:5px;color:var(--muted);font-size:calc(10px*var(--font-scale));padding-left:42px}
.agenda-event-meta>span{display:flex;align-items:center;gap:4px}.agenda-event-meta .icon,.agenda-parent .icon{width:12px;height:12px}
.agenda-parent{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:calc(9px*var(--font-scale));margin-top:3px;padding-left:42px}
.agenda-empty-slot{width:100%;min-height:48px;display:flex;align-items:center;justify-content:flex-start;gap:7px;color:var(--muted);font-size:calc(11px*var(--font-scale));opacity:0;text-align:left}
.agenda-empty-slot:hover,.agenda-empty-slot:focus-visible{opacity:1}.agenda-empty-slot .icon{width:14px;height:14px}
.agenda-now{position:absolute;left:0;right:0;top:calc(var(--minute) * 100%);border-top:1px solid var(--green);pointer-events:none;opacity:.8;z-index:2}
.agenda-now:before{content:'';position:absolute;width:5px;height:5px;border-radius:50%;left:-3px;top:-3px;background:var(--green)}
.agenda-now span{position:absolute;right:7px;top:-15px;font-size:calc(9px*var(--font-scale));background:var(--surface);color:var(--green);padding:0 3px}
.day-no-time{display:grid;grid-template-columns:68px minmax(0,1fr);border-bottom:1px solid var(--line);padding:10px 12px 10px 0;gap:0}
.day-no-time>.caps{font-size:calc(8px*var(--font-scale));padding:8px;text-align:right;letter-spacing:.5px;color:var(--muted)}
.day-no-time>div{display:grid;gap:6px}
.day-hint{margin-top:10px}
/* Real sync state, setup, account sign-in, and explicit conflict resolution. */
.sync-settings h3{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:13px}
.sync-settings h3>.icon{width:16px;height:16px;color:var(--green)}
.sync-settings h3 .badge{font-size:calc(9px*var(--font-scale));font-weight:500}
.sync-auth-form{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:15px}
.sync-auth-form>.btn{justify-self:end;grid-column:1/-1;max-width:100%}
.sync-workspaces{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}
.sync-workspaces>span{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:7px;padding:8px 11px;font-size:calc(11px*var(--font-scale))}
.sync-workspaces small{font-size:calc(9px*var(--font-scale));color:var(--muted);margin-left:6px}
.sync-workspaces .icon{width:14px;height:14px}
.sync-message{font-size:calc(11px*var(--font-scale));margin-top:12px!important;line-height:1.6}
.sync-message.is-error,.sync-error{color:var(--red)}
.sync-backup-link{color:var(--muted);font-size:calc(10px*var(--font-scale));margin-top:13px;padding:0;text-decoration:underline;text-underline-offset:3px}
.sync-conflict-item{padding:17px 0;border-bottom:1px solid var(--line)}
.sync-conflict-item>strong{font-size:calc(13px*var(--font-scale));display:block;margin-bottom:10px}
.sync-conflict-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sync-conflict-options>label{border:1px solid var(--line);border-radius:9px;padding:11px;min-width:0;cursor:pointer;background:var(--bg)}
.sync-conflict-options>label:has(input:checked){border-color:var(--green);background:var(--mint)}
.sync-conflict-options label>span{display:flex;align-items:center;gap:7px;font-size:calc(11px*var(--font-scale));color:var(--text2)}
.sync-conflict-options input{accent-color:var(--green)}
.sync-conflict-options pre{font:inherit;font-size:calc(12px*var(--font-scale));white-space:pre-wrap;overflow-wrap:anywhere;max-height:130px;overflow:auto}
@media(max-width:760px){
 :root{--meta-gap:10px}
 .accent-picker{grid-template-columns:repeat(7,30px);gap:9px}.accent-choice{width:30px;height:30px}
 .rich-toolbar{justify-content:flex-end;gap:3px}.rich-toolbar button{height:34px;min-width:31px}
 .rich-input{font-size:calc(14px*var(--font-scale));min-height:105px}
 .comment-actions .icon-btn{width:32px;height:32px}.comment-meta{gap:5px}.comment-meta time{font-size:calc(9px*var(--font-scale))}.comment-mark{display:none}.comment-row{gap:0}
 .assignee-options label{min-height:40px}.assignee-select summary{min-height:43px}
 .day-toolbar{display:flex;flex-wrap:wrap;gap:6px}
 .day-toolbar>.toolbar-control:first-child{font-size:calc(10px*var(--font-scale))}
 .day-toolbar .timeline-controls{order:3;flex-basis:100%;justify-content:flex-end;margin:2px 0 0}
 .day-toolbar>.toolbar-control:last-child{margin-left:auto}
 .day-toolbar .timeline-controls>.btn{min-height:33px;font-size:calc(11px*var(--font-scale));padding:0 11px}
 .day-agenda-scroll{max-height:60dvh;min-height:320px}.day-agenda-title{padding:11px 12px}
 .agenda-hour{grid-template-columns:46px minmax(0,1fr)}.agenda-hour-label{font-size:calc(10px*var(--font-scale));padding:13px 7px 0 0}
 .agenda-hour-content{padding:7px;min-height:65px}
 .agenda-event{padding:9px 8px}.agenda-event-top{gap:6px}.agenda-event-top strong{font-size:calc(11px*var(--font-scale));line-height:17px}.agenda-event-top time{font-size:calc(9px*var(--font-scale));min-width:29px;line-height:17px}
 .agenda-event-meta,.agenda-parent{padding-left:0;font-size:calc(9px*var(--font-scale))}.agenda-parent{overflow-wrap:anywhere}
 .day-no-time{grid-template-columns:46px minmax(0,1fr);padding-right:7px}.day-no-time>.caps{font-size:calc(7px*var(--font-scale));padding:5px}
 .agenda-empty-slot{justify-content:flex-end}.agenda-empty-slot .icon{opacity:.45}.agenda-empty-slot span{display:none}
 .sync-auth-form{grid-template-columns:1fr;gap:12px}.sync-conflict-options{grid-template-columns:1fr}
 .sync-connect-actions{flex-direction:column;align-items:flex-end}.sync-connect-actions .btn{font-size:calc(11px*var(--font-scale))}
 .sync-settings h3{font-size:calc(13px*var(--font-scale))}.sync-settings h3 .badge{font-size:calc(8px*var(--font-scale))}
}
@media(prefers-reduced-motion:reduce){.task-tooltip{animation:none}body{background-attachment:scroll}}

.day-no-time-group{border-bottom:1px solid var(--line)}
.day-no-time-group>summary{list-style:none;display:flex;align-items:center;gap:8px;cursor:pointer;padding:11px 18px;font-size:calc(11px*var(--font-scale));color:var(--text2)}
.day-no-time-group>summary::-webkit-details-marker{display:none}
.day-no-time-group>summary .icon{width:14px;height:14px;color:var(--muted)}
.day-no-time-group>summary .icon:last-child{margin-left:auto}
.day-no-time-items{display:grid;gap:6px;padding:0 14px 12px 68px}
@media(max-width:760px){.day-no-time-items{padding-left:14px}.day-no-time-group>summary{min-height:42px;padding:8px 13px}}

/* v1.3.1 — mobile compact refinement and inline dictionary creation. */
.task-meta>span,.task-meta>button{min-width:0;max-width:100%;overflow-wrap:anywhere}
.task-meta .icon{flex-shrink:0}
.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:26px;margin:0 0 6px}
.field-label-row>.field-title{margin:0;line-height:1.4}
.field-label-row .entity-add-trigger{width:26px;height:26px;flex-shrink:0;border:1px solid var(--line);border-radius:7px;color:var(--muted)}
.field-label-row .entity-add-trigger:hover{color:var(--green);border-color:var(--green);background:var(--mint)}
.field-label-row .entity-add-trigger .icon{width:14px;height:14px}
.entity-field{min-width:0}
.field-grid{align-items:start}
.assignee-create-area{border-top:1px solid var(--line);padding:6px 8px}
.inline-entity-link{display:flex;align-items:center;gap:7px;width:100%;min-height:35px;padding:6px 7px;text-align:left;color:var(--green);font-size:calc(11px*var(--font-scale));border-radius:6px}
.inline-entity-link:hover{background:var(--mint)}
.inline-entity-link .icon{width:15px;height:15px;flex-shrink:0}
.inline-entity-editor{margin-top:8px;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--surface2);animation:fade-in .18s var(--ease)}
.assignee-create-area .inline-entity-editor{margin:0;border:0;background:transparent;padding:4px}
.inline-entity-editor .field-title{font-size:calc(10px*var(--font-scale))}
.inline-entity-editor>.text-input{width:100%;min-height:37px;font-size:calc(12px*var(--font-scale));padding:8px}
.inline-entity-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px;margin-top:7px}
.inline-entity-actions .btn{font-size:calc(10px*var(--font-scale));min-height:32px;padding:0 8px;gap:4px}
.inline-entity-actions .icon{width:13px;height:13px}
.inline-entity-error{color:var(--red);font-size:calc(10px*var(--font-scale));line-height:1.5;overflow-wrap:anywhere}
.inline-entity-error:not(:empty){margin-top:7px}
.assignee-options label span{min-width:0;overflow-wrap:anywhere}
.filters-footer-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-left:auto}
.filter-modal-row .dynamic-label{overflow-wrap:anywhere}
.dock-filter{position:relative}
.dock-filter-count{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border:2px solid var(--bg);border-radius:10px;background:var(--green);color:var(--accent-ink);font-size:calc(9px*var(--font-scale));font-weight:700;line-height:13px;text-align:center}
/* The AI entry retains its quiet outer border, never a second focus rectangle. */
#smart-input,#smart-input:focus,#smart-input:focus-visible{outline:none!important;outline-offset:0!important;border:0!important;box-shadow:none!important;caret-color:var(--green)}
#smart-form .ai-entry:focus-within{border-color:var(--line-strong);box-shadow:none;outline:none}
/* Bottom-only ambient diagrams: currentColor follows neutral theme, not accent.
   Opacity and transform animations only; no timer, network, canvas or image assets. */
.main-content{position:relative;isolation:isolate}
.ambient-charts{position:fixed;left:0;right:0;bottom:0;height:280px;z-index:-1;overflow:hidden;pointer-events:none;user-select:none;color:var(--muted);opacity:.17;contain:layout paint}
[data-theme=dark] .ambient-charts{opacity:.14}
.ambient-chart{position:absolute;stroke:currentColor;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.ambient-line-chart{left:3%;bottom:18px;width:39%;max-width:420px}
.ambient-bar-chart{left:49%;bottom:35px;width:21%;max-width:235px}
.ambient-ring-chart{right:4%;bottom:56px;width:19%;max-width:165px}
.ambient-chart-grid{opacity:.33;stroke-width:.7}
.ambient-chart-line{stroke-width:1.8;animation:ambient-breathe 18s ease-in-out infinite}
.ambient-chart-nodes{fill:var(--bg);stroke-width:1.4}
.ambient-chart-drift{animation:ambient-drift 24s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.ambient-bar-chart .ambient-chart-drift{animation-delay:-9s;animation-duration:29s}
.ambient-ring-chart .ambient-chart-drift{animation-delay:-16s;animation-duration:32s}
.ambient-chart-bars rect{fill:currentColor;fill-opacity:.16;stroke-width:1;transform-box:fill-box;transform-origin:center bottom;animation:ambient-bars 20s ease-in-out infinite;animation-delay:var(--bar-delay)}
.ambient-ring-track{stroke-width:10;opacity:.13}
.ambient-ring-segments{stroke-width:7;transform-origin:85px 85px;animation:ambient-ring 30s ease-in-out infinite}
.ambient-ring-segments circle:nth-child(2){opacity:.65}.ambient-ring-segments circle:nth-child(3){opacity:.4}
.ambient-ring-inner{stroke-width:.8;opacity:.27}
@keyframes ambient-drift{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@keyframes ambient-breathe{0%,100%{opacity:.65}50%{opacity:1}}
@keyframes ambient-bars{0%,100%{transform:scaleY(.87)}50%{transform:scaleY(1)}}
@keyframes ambient-ring{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
@media(max-width:760px){
 /* Only Compact loses extra padding. Time stays top-right, actions lower-right. */
 .density-compact .task-card>.task-row{min-height:0;padding:23px 11px 5px;row-gap:0;column-gap:7px}
 .density-compact .task-card>.task-row>.task-right .task-due{top:4px;right:12px;line-height:16px}
 .density-compact .task-card .task-meta{margin-top:3px;min-height:30px;padding-right:68px;align-content:center}
 .density-compact .task-card>.task-row>.task-right .task-actions{position:absolute;right:9px;bottom:4px;margin:0;min-height:30px}
 .density-compact .task-card .task-actions .icon-btn{height:30px;width:32px}
 .density-compact .task-card .task-actions .icon-btn::after{content:"";position:absolute;inset:-3px -1px}
 .density-compact .task-card .task-actions .icon-btn{position:relative}
 .density-compact .task-tree-row{min-height:52px;padding-top:4px;padding-bottom:4px}
 .density-compact .list-tree-panel{padding-top:3px;padding-bottom:3px}
 .density-compact .tree-connector:after{top:20px}
 .density-compact .task-tree-node:last-child>.tree-connector:before{height:20px}
 .field-label-row{min-height:30px;margin-bottom:6px}
 .field-label-row .entity-add-trigger{height:30px;width:30px}
 .inline-entity-editor{padding:8px}
 .inline-entity-editor>.text-input{min-height:40px}
 .inline-entity-actions .btn{min-height:36px;padding:0 7px;font-size:calc(10px*var(--font-scale))}
 .inline-entity-link{min-height:42px}
 .thumb-zone{max-width:206px}
 .dock-secondary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}
 .dock-secondary button{width:100%;height:44px;min-width:0;border-radius:12px}
 .dock-secondary .dock-filter.is-active{background:var(--mint);color:var(--green);border-color:var(--green)}
 .filters-dialog .filter-modal-row{min-height:42px;padding:4px 0}
 .filters-dialog .modal-footer{justify-content:flex-end}
 .filters-dialog .filters-footer-actions{flex-direction:column;align-items:stretch;max-width:calc(50vw - 24px);gap:6px}
 .filters-dialog .filters-footer-actions .btn{min-height:42px;padding:0 12px;font-size:calc(10px*var(--font-scale))}
 .ambient-charts{height:220px}
 .ambient-line-chart{width:53%;left:0;bottom:36px}
 .ambient-bar-chart{width:28%;left:52%;bottom:57px}
 .ambient-ring-chart{width:22%;right:1%;bottom:117px}
}
@media(max-width:439px){
 /* Four 44px targets cannot fit in the right half on small phones: use 2×2. */
 .dock-secondary{grid-template-columns:repeat(2,44px);justify-content:end;gap:6px}
 .dock-secondary button{height:44px;width:44px}
 .mobile-dock{gap:8px}
 .main-content{padding-bottom:204px}
 .toast{bottom:calc(186px + var(--keyboard,0px) + env(safe-area-inset-bottom))}
}
@media(max-width:365px){.board-grid{margin-inline:-16px;padding-inline:16px}.inline-entity-actions{flex-direction:column;align-items:stretch}.inline-entity-actions .btn{width:100%}}
@media(prefers-reduced-motion:reduce){.ambient-charts *{animation:none!important;transition:none!important}}

/* v1.3.2 — stable geometry and subtle motion.
   The existing 760px mobile breakpoint remains; both densities share one grid. */
html{scrollbar-gutter:stable}
.main-content{min-height:var(--workspace-floor,0px)}
.modal-body,.sidebar-scroll,.day-agenda-scroll{scrollbar-gutter:stable}
.task-card>.task-row,.density-compact .task-card>.task-row,.board-col .task-card>.task-row{
 display:grid;grid-template-columns:18px 20px minmax(0,1fr) max-content;
 grid-template-rows:auto auto;column-gap:10px;row-gap:2px;align-items:start;
 min-height:0;padding:14px 17px 10px;position:relative;
}
.density-compact .task-card>.task-row{padding-block:9px 6px}
.task-card>.task-row>.task-body,.task-card>.task-row>.task-right,.board-col .task-card>.task-row>.task-right{display:contents}
.task-card>.task-row>.root-toggle{grid-column:1;grid-row:1;min-width:18px;width:24px;height:25px;margin:-2px 0 0 -3px}
.task-card>.task-row>.task-check{grid-column:2;grid-row:1;margin:1px 0 0;width:20px;height:20px}
.task-card>.task-row .task-title-wrap{grid-column:3;grid-row:1;display:flex;align-items:flex-start;flex-wrap:wrap;min-width:0;min-height:22px;gap:3px 7px}
.task-card>.task-row .task-title{line-height:22px}
.task-card>.task-row .task-title-wrap>.badge{margin-top:2px}
.task-card>.task-row>.task-right .task-due,.board-col .task-card>.task-row .task-due{
 position:static;grid-column:4;grid-row:1;align-self:start;justify-self:end;
 margin:0;line-height:22px;white-space:nowrap;font-size:calc(10px*var(--font-scale));max-width:none;
}
.task-card>.task-row .task-meta,.density-compact .task-card .task-meta{
 grid-column:3;grid-row:2;align-self:center;min-width:0;min-height:25px;
 margin:0;padding:0;gap:4px 10px;align-content:center;
}
.task-card>.task-row>.task-right .task-actions,.density-compact .task-card>.task-row>.task-right .task-actions,.board-col .task-card>.task-row .task-actions{
 position:static;grid-column:4;grid-row:2;justify-self:end;align-self:center;margin:0 -4px 0 0;min-height:28px;
}
/* Entry affects opacity only; a finished keyframe must not mask hover transform. */
.task-card{animation-name:card-reveal;transition:transform .24s var(--ease),box-shadow .24s,border-color .24s;transform-origin:center;}
@keyframes card-reveal{from{opacity:0}to{opacity:1}}
@media(hover:hover) and (pointer:fine){
 .task-card:hover,.task-card.has-tree:hover{transform:translateY(-1px) scale(1.006);z-index:2;box-shadow:0 6px 24px #0000000a}
 .board-col .task-card:hover{transform:translateY(-1px) scale(1.012)}
}
/* The task shell (including footer) has identical geometry on either tab. */
.task-editor-modal{height:min(850px,calc(100dvh - 60px));max-height:calc(100dvh - 60px);width:740px}
.task-editor-modal>.modal-top,.task-editor-modal>.modal-tabs{flex-shrink:0}
.task-editor-modal>.modal-body{flex:1 1 0;min-height:0;max-height:none}
.task-editor-modal>.detail-footer{height:78px;min-height:78px;box-sizing:border-box}
.modal-backdrop.is-refresh,.modal-backdrop.is-refresh>.modal{animation:none}
/* Pickers overlay the form, rather than expanding its grid rows. */
.entity-select{position:relative;min-width:0;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface)}
.entity-select>summary{display:flex;align-items:center;gap:9px;min-height:42px;padding:9px 11px;list-style:none;cursor:pointer;font-size:calc(12px*var(--font-scale))}
.entity-select>summary::-webkit-details-marker{display:none}
.entity-select>summary>span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.entity-select>summary>.icon{width:16px;height:16px;flex-shrink:0;color:var(--muted)}
.entity-select>summary>.icon:last-child{margin-left:auto;width:13px;transition:transform .18s}
.entity-select[open]{border-color:var(--green);z-index:9}
.entity-select[open]>summary>.icon:last-child{transform:rotate(180deg)}
.entity-menu{position:absolute;z-index:10;top:calc(100% + 5px);left:-1px;right:-1px;padding:5px;background:var(--surface);border:1px solid var(--line-strong);box-shadow:var(--shadow-float);border-radius:10px;max-height:320px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;animation:fade-in .15s}
.entity-menu.opens-up{top:auto;bottom:calc(100% + 5px)}
.entity-menu .assignee-options{max-height:none;overflow:visible;border:0;padding:1px}
.dictionary-option{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:35px;padding:8px 10px;font-size:calc(12px*var(--font-scale));text-align:left;border-radius:6px}
.dictionary-option>span{min-width:0;overflow-wrap:anywhere}
.dictionary-option>.icon{width:14px;height:14px;flex-shrink:0;color:var(--green)}
.dictionary-option:hover,.dictionary-option.is-selected{background:var(--mint)}
.dictionary-create-area,.entity-menu .assignee-create-area{margin-top:4px;border-top:1px solid var(--line);padding:4px 1px 0}
.entity-menu .inline-entity-editor{margin:0;border:0;background:transparent;padding:5px}
/* Cursor tooltip has no decorative arrow pointing to an unrelated table cell. */
.task-tooltip{z-index:150;max-width:min(380px,calc(100vw - 16px));font-size:calc(12px*var(--font-scale));transition:none}
/* Date popover is anchored to its trigger, including on mobile. */
.day-date-trigger{display:flex;align-items:center;gap:7px;min-height:36px;padding:5px 10px;border:1px solid var(--line);border-radius:8px;white-space:nowrap;color:var(--text);transition:background .18s,border-color .18s}
.day-date-trigger:hover,.day-date-trigger[aria-expanded=true]{background:var(--mint);border-color:var(--line-strong)}
.day-date-trigger>.icon{width:14px;height:14px;color:var(--muted)}
.popover.calendar-popover{min-width:0;max-width:calc(100vw - 20px);max-height:calc(var(--vvh,100dvh) - 20px);padding:12px;z-index:100;right:auto;bottom:auto;transform-origin:top center;border-radius:15px;animation:calendar-in .16s var(--ease)}
.calendar-popover.is-refresh{animation:none}
.calendar-head{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:12px}
.calendar-head strong{font-weight:600;font-size:calc(13px*var(--font-scale));text-transform:capitalize}
.calendar-head .icon-btn{width:34px;height:34px;border-radius:8px}
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}
.calendar-weekdays{margin-bottom:5px;text-align:center;color:var(--muted);font-size:calc(10px*var(--font-scale));line-height:22px}
.calendar-date{display:grid;place-items:center;position:relative;min-height:34px;border-radius:8px;font-size:calc(12px*var(--font-scale));font-variant-numeric:tabular-nums}
.calendar-date.outside-month{color:var(--muted);opacity:.55}
.calendar-date:hover{background:var(--surface2)}
.calendar-date.is-today:not(.is-selected){box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--green)}
.calendar-date.is-selected{background:var(--green);color:var(--on-primary);font-weight:600;opacity:1}
.calendar-date:focus-visible{outline:1px solid var(--green);outline-offset:1px}
.calendar-footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);margin-top:10px;padding-top:10px}
.calendar-footer .btn{min-height:34px;padding:0 12px;font-size:calc(11px*var(--font-scale))}
@keyframes calendar-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
/* Distinct neutral backgrounds: planning at the top, analytics at the bottom. */
.ambient-wash{position:fixed;top:0;left:0;width:100%;height:100vh;height:100lvh;z-index:-2;overflow:hidden;pointer-events:none;user-select:none;border-radius:inherit}
.ambient-wash:before{content:"";position:absolute;inset:-50px;background:radial-gradient(ellipse at 74% 12%,#939d9614,transparent 46%),radial-gradient(ellipse at 20% 83%,#82978c10,transparent 50%);animation:ambient-wash-drift 44s ease-in-out infinite;transform-origin:center}
.ambient-charts-bottom{height:290px}
.ambient-charts-top{top:0;bottom:auto;height:285px;opacity:.12}
[data-theme=dark] .ambient-charts-top{opacity:.10}
.ambient-charts-top .ambient-plan-board{left:36%;top:3px;width:40%;max-width:410px}
.ambient-charts-top .ambient-plan-calendar{right:4%;top:24px;width:16%;max-width:142px}
.ambient-chart-bars rect{animation:ambient-bar-height var(--bar-duration,23s) ease-in-out infinite;animation-delay:var(--bar-delay,0s);transform-box:fill-box;transform-origin:center bottom}
.ambient-ring-segments{animation:ambient-ring-rotate 42s ease-in-out infinite}
.ambient-ring-segments circle{animation-duration:28s;animation-iteration-count:infinite;animation-timing-function:ease-in-out}
.ambient-ring-segments circle:nth-child(1){animation-name:ambient-segment-one}
.ambient-ring-segments circle:nth-child(2){animation-name:ambient-segment-two}
.ambient-ring-segments circle:nth-child(3){animation-name:ambient-segment-three}
@keyframes ambient-bar-height{0%,100%{transform:scaleY(.92)}34%{transform:scaleY(.55)}68%{transform:scaleY(1.04)}}
@keyframes ambient-segment-one{0%,100%{stroke-dasharray:40 60}33%{stroke-dasharray:26 74}66%{stroke-dasharray:32 68}}
@keyframes ambient-segment-two{0%,100%{stroke-dasharray:26 74;stroke-dashoffset:-45}33%{stroke-dasharray:37 63;stroke-dashoffset:-31}66%{stroke-dasharray:18 82;stroke-dashoffset:-37}}
@keyframes ambient-segment-three{0%,100%{stroke-dasharray:19 81;stroke-dashoffset:-76}33%{stroke-dasharray:22 78;stroke-dashoffset:-73}66%{stroke-dasharray:35 65;stroke-dashoffset:-60}}
@keyframes ambient-ring-rotate{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(7deg)}}
@keyframes ambient-wash-drift{0%,100%{transform:translate3d(-12px,0,0) scale(1)}50%{transform:translate3d(12px,-18px,0) scale(1.025)}}
[data-motion-paused] .ambient-charts *,[data-motion-paused] .ambient-wash:before{animation-play-state:paused!important}
@media(max-width:760px){
 .task-card>.task-row,.density-compact .task-card>.task-row,.board-col .task-card>.task-row{grid-template-columns:14px 18px minmax(0,1fr) max-content;column-gap:7px;row-gap:2px;padding:15px 11px 11px}
 .density-compact .task-card>.task-row{padding:8px 11px 5px}
 .task-card>.task-row>.task-check{width:18px;height:18px;margin-top:2px}
 .task-card>.task-row>.root-toggle{margin-left:-6px}
 .task-card>.task-row .task-title{font-size:calc(12px*var(--font-scale));line-height:21px}
 .task-card>.task-row .task-title-wrap{min-height:21px;gap:2px 5px}
 .task-card>.task-row>.task-right .task-due{line-height:21px;font-size:calc(9px*var(--font-scale));margin:0;position:static}
 .task-card>.task-row .task-meta,.density-compact .task-card .task-meta{min-height:30px;margin:0;padding:0;gap:3px 8px;align-self:center}
 .task-card>.task-row>.task-right .task-actions,.density-compact .task-card>.task-row>.task-right .task-actions{position:static;margin:0 -3px 0 0;min-height:30px}
 .task-card .task-actions .icon-btn{width:32px;height:32px}
 .task-editor-modal{height:calc(var(--vvh,100dvh) - 16px);max-height:calc(var(--vvh,100dvh) - 16px)}
 .task-editor-modal>.detail-footer{height:calc(64px + env(safe-area-inset-bottom));min-height:calc(64px + env(safe-area-inset-bottom))}
 .task-editor-modal>.modal-body{max-height:none}
 .entity-select>summary{min-height:42px;font-size:calc(11px*var(--font-scale))}
 .entity-select>summary>span{white-space:normal;overflow-wrap:anywhere}
 .entity-menu .dictionary-option,.entity-menu .assignee-options label{min-height:40px;font-size:calc(11px*var(--font-scale))}
 .day-toolbar{flex-wrap:wrap}
 .day-toolbar .timeline-controls{order:3;flex:1 0 100%;margin:0;justify-content:center;gap:5px}
 .day-toolbar>.toolbar-control:last-child{margin-left:auto}
 .day-date-trigger{padding:5px 6px;gap:5px}
 .day-toolbar .timeline-controls strong{font-size:calc(12px*var(--font-scale))}
 .popover.calendar-popover{position:fixed;right:auto!important;bottom:auto!important;min-width:0}
 .calendar-date{min-height:36px}
 .ambient-charts-top{height:260px;opacity:.09}
 [data-theme=dark] .ambient-charts-top{opacity:.09}
 .ambient-charts-top .ambient-plan-board{left:18%;top:0;width:65%}
 .ambient-charts-top .ambient-plan-calendar{right:-1%;top:82px;width:24%}
 .ambient-charts-bottom{height:235px}
}
@media(max-width:365px){
 .task-card>.task-row,.density-compact .task-card>.task-row{column-gap:5px;padding-inline:8px;grid-template-columns:11px 17px minmax(0,1fr) max-content}
 .task-card>.task-row .task-title{font-size:calc(11.5px*var(--font-scale))}
 .task-card>.task-row>.task-right .task-due{font-size:calc(8px*var(--font-scale))}
 .day-date-trigger>.icon:first-child{display:none}
}
@media(prefers-reduced-motion:reduce){
 .task-card:hover,.task-card.has-tree:hover,.board-col .task-card:hover{transform:none}
 .ambient-charts *,.ambient-wash:before{animation:none!important;transition:none!important}
}
/* Keep all thumb controls in the right half even with classic 15px scrollbars. */
@media(max-width:760px){.thumb-zone{width:calc(50vw - 41px)}}
@media(max-width:479px){.dock-secondary{grid-template-columns:repeat(2,44px);justify-content:end;gap:6px}.dock-secondary button{height:44px;width:44px}.main-content{padding-bottom:204px}}

/* v1.3.3 — named parent, consistent priority, taller thumb panels and query-only search. */
.task-editor-modal .modal-crumb{flex:1;min-width:0}
.task-editor-modal .modal-crumb>.icon{flex-shrink:0}
.task-editor-modal .modal-crumb .parent-task-link{min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.5;color:var(--text2);border-radius:4px;padding:3px 0}
.task-editor-modal .modal-crumb .parent-task-link:hover{color:var(--green)}
.task-editor-modal .modal-crumb+.spacer{flex:0}
.priority-option-label{display:flex;align-items:center;gap:8px}
.priority-dot{display:block;flex-shrink:0;width:6px;height:6px;border-radius:50%;background:var(--muted)}
.priority-dot.priority-high{background:var(--amber)}
.priority-dot.priority-low{background:var(--blue)}
.priority-select>summary:focus-visible,.entity-select>summary:focus-visible{outline:1px solid var(--green);outline-offset:2px;border-radius:8px}
/* Planning cards and calendar cells never repeat the lower chart composition. */
.ambient-plan-column{opacity:.35;fill:currentColor;fill-opacity:.025}
.ambient-plan-guide{opacity:.35;stroke-width:.8}
.ambient-plan-arrow{opacity:.55}
.ambient-plan-card{transform-box:fill-box;transform-origin:center;animation:ambient-plan-float var(--plan-duration,30s) ease-in-out infinite;animation-delay:var(--plan-delay,0s)}
.ambient-plan-card>rect:first-child{fill:var(--bg);fill-opacity:.8}
.ambient-plan-card>path:not(.ambient-plan-check){opacity:.6;stroke-width:1.4}
.ambient-plan-checkbox{opacity:.8}
.ambient-plan-check{stroke-width:1.6;stroke-dasharray:1;animation:ambient-check-progress 22s ease-in-out infinite;animation-delay:var(--plan-delay,0s)}
.ambient-calendar-sheet{fill:var(--bg);fill-opacity:.35}
.ambient-calendar-day{opacity:.45;fill:currentColor;fill-opacity:.08}
.ambient-calendar-selected{animation:ambient-calendar-mark 27s ease-in-out infinite;animation-delay:var(--day-delay,0s);fill-opacity:.3}
@keyframes ambient-plan-float{0%,100%{transform:translateY(1px)}50%{transform:translateY(-5px)}}
@keyframes ambient-check-progress{0%,100%{stroke-dashoffset:0;opacity:.75}45%{stroke-dashoffset:1;opacity:.2}75%{stroke-dashoffset:0;opacity:.8}}
@keyframes ambient-calendar-mark{0%,100%{opacity:.85}50%{opacity:.2}}
/* Floating panels have a stationary footer and a separately scrollable body. */
.popover.thumb-popover{display:flex;flex-direction:column;overflow:hidden}
.thumb-popover>.popover-scroll{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;scrollbar-gutter:stable}
.thumb-popover>.close-menu{position:static;flex-shrink:0;min-height:38px}
.popover.nav-popover .menu-item>span{display:flex;align-items:center;justify-content:space-between;gap:6px;flex:1;min-width:0}
.popover.nav-popover .menu-item .count{font-variant-numeric:tabular-nums}
.popover.filter-popover{width:320px;max-width:calc(100vw - 24px);max-height:min(640px,calc(var(--vvh,100dvh) - 24px));padding:8px}
.floating-filter-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 8px 3px}
.floating-filter-heading strong{font-size:calc(13px*var(--font-scale));font-weight:600}
.floating-filter-heading .badge{font-size:calc(10px*var(--font-scale));min-width:24px;justify-content:center}
.floating-filter-hint{font-size:calc(10px*var(--font-scale));color:var(--muted);padding:0 8px 9px}
.floating-filter-group{border-top:1px solid var(--line);padding:4px 0}
.floating-filter-group>summary{display:flex;align-items:center;gap:7px;min-height:36px;padding:6px 7px;cursor:pointer;list-style:none;color:var(--text2);font-size:calc(11px*var(--font-scale));font-weight:600}
.floating-filter-group>summary::-webkit-details-marker{display:none}
.floating-filter-group>summary .icon{width:14px;height:14px;color:var(--muted)}
.floating-filter-group>summary .icon:last-child{margin-left:auto;width:12px;transition:transform .2s}
.floating-filter-group:not([open])>summary .icon:last-child{transform:rotate(-90deg)}
.floating-filter-options{padding:1px 0 5px}
.floating-filter-option{display:flex;align-items:center;gap:8px;width:100%;text-align:left;min-height:36px;padding:7px 8px;border-radius:7px;color:var(--text2);font-size:calc(11px*var(--font-scale))}
.floating-filter-option:hover,.floating-filter-option.is-selected{background:var(--mint)}
.floating-filter-check{display:grid;place-items:center;flex-shrink:0;width:15px;height:15px;border:1px solid var(--line-strong);border-radius:4px}
.is-selected>.floating-filter-check{background:var(--green);border-color:var(--green);color:var(--on-primary)}
.floating-filter-check .icon{width:12px;height:12px}
.floating-filter-name{flex:1;min-width:0;overflow-wrap:anywhere}
.floating-filter-count{flex-shrink:0;color:var(--muted);font-size:calc(10px*var(--font-scale));font-variant-numeric:tabular-nums}
.floating-filter-footer{flex-shrink:0;border-top:1px solid var(--line);padding:7px 4px 2px;background:var(--surface)}
.floating-filter-status{display:block;padding:0 4px 7px;font-size:calc(10px*var(--font-scale));color:var(--muted)}
.floating-filter-actions{display:flex;justify-content:flex-end;gap:6px}
.floating-filter-actions .btn{font-size:calc(11px*var(--font-scale));min-height:38px;padding:0 12px}
.floating-filter-actions button:disabled{cursor:default}
/* One stable search surface, including before the first character is typed. */
.search-modal{height:min(640px,calc(100dvh - 60px))}
.search-modal>.search-box,.search-modal>.search-footer,.search-modal>.search-actions{flex-shrink:0}
.search-modal>.search-results{flex:1 1 0;min-height:0;max-height:none;scrollbar-gutter:stable;overscroll-behavior:contain}
.search-idle{min-height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:28px;color:var(--muted)}
.search-idle>.icon{width:28px;height:28px;stroke-width:1.2;opacity:.75;margin-bottom:4px}
.search-idle>strong{font-size:calc(13px*var(--font-scale));color:var(--text2);font-weight:500}
.search-idle>span{font-size:calc(11px*var(--font-scale));max-width:250px;line-height:1.7}
.search-actions .btn{margin-left:auto}
@media(max-width:760px){
 /* The navigation panel is twice the former (100dvh/3 - 20px) height.
    Only these two panels grow upward; task/date popovers keep their own geometry. */
 .popover.thumb-popover{height:calc(200*var(--vvh,100dvh)/3 - 40px);max-height:calc(var(--vvh,100dvh) - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));width:calc(50vw - 22px);max-width:calc(50vw - 22px);padding:6px}
 .popover.nav-popover button.menu-item{min-height:39px}
 .thumb-popover>.close-menu{margin-top:0;bottom:auto;min-height:40px}
 .popover.filter-popover .floating-filter-heading strong{font-size:calc(12px*var(--font-scale))}
 .floating-filter-hint{font-size:calc(9px*var(--font-scale))}
 .floating-filter-group>summary{font-size:calc(10px*var(--font-scale));min-height:38px;gap:6px}
 .floating-filter-group>summary .icon{width:13px;height:13px}
 .floating-filter-option{font-size:calc(10px*var(--font-scale));min-height:40px;gap:7px;padding:7px}
 .floating-filter-check{width:14px;height:14px}
 .floating-filter-count{font-size:calc(9px*var(--font-scale))}
 .floating-filter-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px}
 .floating-filter-actions .btn{font-size:calc(10px*var(--font-scale));min-height:40px;padding:0 5px;gap:4px}
 .floating-filter-actions .icon{width:12px;height:12px}
 .floating-filter-footer{padding:6px 1px 0}
 .floating-filter-status{font-size:calc(9px*var(--font-scale))}
 .search-modal{height:calc(var(--vvh,100dvh) - 70px);max-height:calc(var(--vvh,100dvh) - 70px)}
 .search-modal>.search-actions{display:flex;justify-content:flex-end}
 .search-idle{min-height:180px}
 .task-editor-modal .modal-crumb .parent-task-link{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;max-height:3.6em;line-height:1.5}
}
@media(max-width:365px){
 .floating-filter-group>summary{padding-inline:4px;gap:4px;font-size:calc(9px*var(--font-scale))}
 .floating-filter-actions .btn{font-size:calc(9px*var(--font-scale))}
 .floating-filter-actions .btn>.icon{display:none}
 .task-editor-modal .modal-top{gap:7px}
}
@media(prefers-reduced-motion:reduce){.ambient-plan-card,.ambient-plan-check,.ambient-calendar-selected{animation:none!important}}
/* A wrapped project/assignee value raises both controls in its grid row equally. */
.editable-task-form .field-grid{align-items:stretch}
.editable-task-form .field-grid>.entity-field{display:flex;flex-direction:column}
.editable-task-form .field-grid>.entity-field>.entity-select{flex:1}
.editable-task-form .field-grid>.entity-field>.entity-select>summary{height:100%}
.editable-task-form .field-grid>.field-span{grid-column:1/-1}

/* v1.3.4 — visible priority, button-anchored context menus and compact controls. */
.task-card>.task-row{position:relative}
.task-card.priority-high>.task-row::before{content:"";position:absolute;inset:12px auto 12px 0;width:3px;z-index:1;pointer-events:none;background:var(--amber);border-radius:0 3px 3px 0}
.task-card.priority-high.is-overdue>.task-row::before{background:var(--red)}
.popover.context-popover{display:flex;flex-direction:column;min-width:0;width:244px;max-width:calc(100vw - 24px);overflow:hidden;right:auto;bottom:auto;animation:context-menu-in .14s var(--ease);transform-origin:top right}
.popover.context-popover .popover-scroll{overflow:auto;flex:1;min-height:0}
.popover.context-popover .close-menu{flex-shrink:0;position:static}
.popover.context-popover[data-placement="above"]{transform-origin:bottom right}
@keyframes context-menu-in{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}
.connection{min-width:176px;justify-content:flex-start;min-height:32px;white-space:nowrap;border-radius:7px}
.connection:hover{background:var(--surface2)}
.sync-status-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--muted)}
.sync-status-icon .icon{width:14px;height:14px}
.connection[data-sync-state="synced"] .sync-status-icon{color:var(--green)}
.connection:is([data-sync-state="checking"],[data-sync-state="syncing"]) .sync-status-icon .icon{animation:sync-indicator-spin 1.6s linear infinite}
.connection:is([data-sync-state="pending"],[data-sync-state="offline"],[data-sync-state="login"]) .sync-status-icon{color:var(--amber)}
.connection:is([data-sync-state="error"],[data-sync-state="conflict"],[data-sync-state="storage-error"]){color:var(--red)}
.connection:is([data-sync-state="error"],[data-sync-state="conflict"],[data-sync-state="storage-error"]) .sync-status-icon{color:inherit}
@keyframes sync-indicator-spin{to{transform:rotate(360deg)}}
@media(max-width:1020px){.connection{min-width:158px}}
@media(max-width:760px){
 .mobile-mode{pointer-events:auto;cursor:pointer;min-height:36px;gap:7px}
 .mobile-mode:hover{background:var(--surface2)}
 .mobile-mode .workspace-toggle-icon{width:12px;height:12px;opacity:.65}
 .density-compact .task-card.priority-high>.task-row::before{top:9px;bottom:9px}
 .popover.context-popover{width:min(244px,calc(100vw - 24px));max-width:calc(100vw - 24px);padding:7px}
 .popover.context-popover button.menu-item{min-height:40px;font-size:calc(11px*var(--font-scale))}
 .task-editor-modal>.detail-footer{padding:9px 18px calc(9px + env(safe-area-inset-bottom));flex-wrap:nowrap;justify-content:flex-end;align-items:center}
 .detail-footer .footer-action-zone{flex-direction:row;align-items:center;justify-content:flex-end;gap:8px;width:auto;max-width:100%}
 .detail-footer .footer-action-row{align-items:center;gap:4px;flex-wrap:nowrap;flex-shrink:0}
 .detail-footer .mobile-task-switch{gap:4px;flex-shrink:0}
 .detail-footer .mobile-task-switch button,.detail-footer .footer-action-row>.icon-btn{width:38px;height:42px}
 .detail-footer .btn{min-height:42px;padding:0 11px;min-width:100px}
}
@media(max-width:365px){
 .task-editor-modal>.detail-footer{padding-inline:12px}
 .detail-footer .footer-action-zone{gap:6px}
}
@media(prefers-reduced-motion:reduce){.popover.context-popover{animation:none}.connection .sync-status-icon .icon{animation:none!important}}
/* Keep a stable, non-overflowing header on tablets beside the desktop sidebar. */
.connection>[data-sync-label]{min-width:0;overflow:hidden;text-overflow:ellipsis}
@media(min-width:761px) and (max-width:1020px){
 .topbar{padding-inline:22px;gap:10px}
 .topbar .workspace-switch{flex-shrink:0}
 .topbar .workspace-switch button{min-width:86px;padding-inline:8px}
 .topbar>.topbar-rule,.topbar .search-open .keycap{display:none}
 .topbar .connection{flex:0 1 176px;min-width:0}
 .topbar .profile-label{flex-shrink:0}
}

/* Напоминание в форме задачи: компактная строка рядом со сроком (11 §9). */
.reminder-field .reminder-row{display:flex;gap:8px;align-items:center}
.reminder-field .reminder-row .text-input{flex:1;min-width:0}
.reminder-toggle{white-space:nowrap}
.reminder-toggle.active{background:var(--mint);color:var(--green);border-color:var(--line-strong)}
.reminder-field .field-hint{margin-top:7px}

/* Крупный мобильный шрифт: ряд напоминания не помещался и обрезал «Основное».
   Поля кнопок чуть уже, а при нехватке ширины ряд переносится, а не режется. */
@media(max-width:760px){
 .reminder-field .reminder-row{flex-wrap:wrap}
 .reminder-field .reminder-row .btn{padding:0 13px}
}

/* Мобильный шрифт на 10% крупнее (решение владельца).
   Все размеры текста записаны как calc(Npx*var(--font-scale)): на телефоне
   переменная равна 1.1, на компьютере остаётся 1, поэтому вид не меняется. */
@media(max-width:760px){:root{--font-scale:1.1}}

/* Быстрый выбор дня недели для срока и напоминания. */
.weekday-row{display:flex;gap:6px;margin-bottom:8px}
.weekday-chip{flex:1 1 0;min-width:0;padding:8px 0;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text2);font-size:calc(10px*var(--font-scale));font-weight:500;line-height:1}
.weekday-chip:hover{border-color:var(--line-strong);background:var(--surface2)}
.weekday-chip.today:not(.active){background:var(--mint);border-color:var(--green);color:var(--green);font-weight:600}
.weekday-chip.active{background:var(--green);border-color:var(--green);color:var(--surface);font-weight:600}
[data-theme=dark] .weekday-chip.active{color:#20321f}
@media(max-width:760px){.weekday-row{gap:5px}.weekday-chip{padding:9px 0;font-size:calc(10px*var(--font-scale));border-radius:8px}}


/* Поля напоминания: дата и время отдельно, как у срока. */
.reminder-date-grid{margin-bottom:8px}
.reminder-field .reminder-row{flex-wrap:wrap}

/* Фотография в комментарии открывается нажатием: миниатюра — кнопка. */
.comment-image-button{display:block;position:relative;padding:0;margin-top:9px;max-width:270px;width:100%;text-align:left;border-radius:9px}
.comment-image-button .comment-image{margin-top:0}
.comment-image-hint{position:absolute;right:7px;bottom:7px;display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:7px;background:#0f1310b8;color:#f1f5ef;font-size:calc(9px*var(--font-scale))}
.comment-image-button:hover .comment-image-hint{background:#0f1310e0}
.photo-chip{width:100%;text-align:left}
.photo-chip img{border-radius:6px}

