:root{--c-900:#1f2733;--c-800:#3a414c;--c-700:#5b616b;--c-600:#6b7280;--c-500:#8a8f98;--c-400:#9aa0a8;--c-300:#a8acb3;--c-200:#c2c6cc;--c-150:#cfd3d8;--page:#f6f4ef;--surface:#fff;--surface-tint:#eceae3;--surface-tint-2:#efece4;--surface-tint-3:#f4f3ee;--surface-hover:#faf9f6;--border:#00000012;--border-strong:#0000001f;--border-input:#00000024;--border-dashed:#00000029;--gold:#dd8a3c;--focus:#c98a4a;--green:#22a06b;--red:#b91c1c;--r-sm:6px;--r-md:9px;--r-lg:11px;--r-xl:14px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--t-xs:11.5px;--t-sm:12.5px;--t-md:13.5px;--t-lg:14.5px;--t-xl:16.5px;--tap:44px}*{box-sizing:border-box}body{background:var(--page);color:var(--c-900);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}input,select,textarea{font-family:inherit;font-size:16px}@media (width>=900px){input,select,textarea{font-size:var(--t-md)}}input:focus,select:focus,textarea:focus{outline:none;box-shadow:0 0 0 3px #c98a4a26;border-color:#c98a4a!important}input[type=range]{appearance:none;background:#e3e0d8;border-radius:4px;outline:none;height:5px}input[type=range]::-webkit-slider-thumb{appearance:none;cursor:pointer;background:#fff;border:2px solid #2b3340;border-radius:50%;width:17px;height:17px;box-shadow:0 1px 3px #0003}input[type=range]::-moz-range-thumb{cursor:pointer;background:#fff;border:2px solid #2b3340;border-radius:50%;width:15px;height:15px}.tf-scroll::-webkit-scrollbar{width:8px;height:8px}.tf-scroll::-webkit-scrollbar-thumb{background:#00000024;border-radius:8px}@keyframes tfPop{0%{opacity:0;transform:translateY(10px)scale(.985)}to{opacity:1;transform:none}}@keyframes tfFade{0%{opacity:0}to{opacity:1}}@keyframes tfToast{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes tfSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}.tf-app{min-height:100vh}.tf-header{border-bottom:1px solid var(--border);z-index:30;background:var(--page);justify-content:space-between;align-items:center;gap:8px;padding:12px 16px;display:flex;position:sticky;top:0}@media (width>=900px){.tf-header{padding:17px 40px;position:static}}.tf-brand{align-items:center;gap:12px;display:flex}.tf-brand-icon{background:#222a35;border-radius:50%;flex:none;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.tf-brand-name{letter-spacing:-.01em;font-size:19px;font-weight:700;line-height:1.1}.tf-brand-sub{font-size:var(--t-sm);color:var(--c-500);display:none}@media (width>=900px){.tf-brand-sub{display:block}}.tf-header-actions{gap:8px;display:flex}@media (width>=900px){.tf-header-actions{gap:10px}}.tf-btn-label{display:none}@media (width>=900px){.tf-btn-label{display:inline}}.tf-btn-secondary{min-height:var(--tap);border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);color:var(--c-800);font-size:var(--t-md);cursor:pointer;align-items:center;gap:7px;padding:9px 12px;font-weight:500;display:flex}@media (width>=900px){.tf-btn-secondary{padding:9px 15px}}.tf-btn-secondary:hover{background:var(--surface-hover)}.tf-sync-pill{color:#1c7a54;border-color:#22a06b59}.tf-sync-dot{background:var(--green);border-radius:50%;flex:none;width:7px;height:7px}.tf-btn-primary{min-height:var(--tap);min-width:var(--tap);border-radius:var(--r-md);color:#fff;font-size:var(--t-md);cursor:pointer;background:var(--accent);border:none;justify-content:center;align-items:center;gap:7px;padding:9px 12px;font-weight:600;display:flex}@media (width>=900px){.tf-btn-primary{justify-content:flex-start;padding:9px 16px}}.tf-btn-primary:hover{opacity:.92}.tf-btn-small{min-height:var(--tap);border-radius:var(--r-sm);color:#fff;font-size:var(--t-sm);cursor:pointer;background:var(--accent);border:none;padding:8px 12px;font-weight:600}.tf-btn-text{color:var(--c-700);cursor:pointer;background:0 0;border:none;padding:10px 6px;font-size:14px;font-weight:600;position:relative}.tf-btn-text:hover{color:var(--c-900)}.tf-btn-submit{min-height:var(--tap);border-radius:var(--r-lg);color:#fff;cursor:pointer;background:var(--accent);border:none;padding:11px 22px;font-size:14px;font-weight:600}.tf-btn-submit:hover{opacity:.92}.tf-add-link{color:var(--c-600);font-size:var(--t-sm);cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;padding:2px 4px;font-weight:500;display:flex;position:relative}.tf-add-link:hover{color:var(--c-900)}.tf-main{max-width:1240px;padding:16px 16px calc(72px + env(safe-area-inset-bottom));margin:0 auto}@media (width>=900px){.tf-main{padding:26px 40px 60px}}.tf-stats{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:16px;display:grid}@media (width>=900px){.tf-stats{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}}.tf-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:13px 15px}@media (width>=900px){.tf-stat-card{padding:15px 18px}}.tf-stat-value{letter-spacing:-.02em;font-size:21px;font-weight:700;line-height:1.1}@media (width>=900px){.tf-stat-value{font-size:27px}}.tf-stat-label{font-size:var(--t-sm);color:var(--c-500);margin-top:3px}.tf-layout{display:block}@media (width>=900px){.tf-layout{grid-template-columns:264px 1fr;align-items:start;gap:24px;display:grid}}.tf-content{min-width:0}.tf-goals-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);padding:18px}.tf-goals-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.tf-goals-head-left{align-items:center;gap:9px;display:flex}.tf-goals-title{font-size:var(--t-xl);font-weight:700}.tf-goal-row{border-radius:var(--r-md);cursor:pointer;margin:0 -8px 8px;padding:6px 8px;transition:background .15s}.tf-goal-row:hover{background:var(--surface-hover)}.tf-goal-row:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.tf-goal-row.is-active{background:color-mix(in srgb, var(--goal-color) 12%, transparent);box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--goal-color) 55%, transparent)}.tf-show-all{margin-left:auto;margin-right:10px}.tf-filter-bar{margin-bottom:12px}.tf-filter-chip{border:1px solid var(--border-strong);background:var(--surface);font:inherit;font-size:var(--t-sm);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:5px 12px;font-weight:600;display:inline-flex}.tf-filter-chip:hover{background:var(--surface-hover)}.tf-goal-row-top{justify-content:space-between;align-items:center;margin-bottom:7px;display:flex}.tf-goal-name-wrap{align-items:center;gap:8px;display:flex}.tf-dot{border-radius:50%;flex:none;width:9px;height:9px;display:inline-block}.tf-goal-name{font-size:14px;font-weight:600}.tf-goal-frac{color:var(--c-400);font-size:12px}.tf-progress-track{border-radius:var(--r-sm);background:#eceae3;height:6px;overflow:hidden}.tf-progress-fill{border-radius:var(--r-sm);height:100%;transition:width .35s}.tf-add-goal-row{gap:6px;margin-top:12px;display:flex}.tf-input{min-width:0;min-height:var(--tap);border:1px solid var(--border-input);border-radius:var(--r-sm);font-size:var(--t-sm);flex:1;padding:8px 10px}.tf-autoschedule-btn{width:100%;min-height:var(--tap);border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface-tint-2);color:var(--c-800);cursor:pointer;justify-content:center;align-items:center;gap:8px;margin-top:14px;padding:12px;font-size:14px;font-weight:600;display:flex}.tf-autoschedule-btn:hover{background:#e9e5db}.tf-tabs{background:var(--surface-tint);border-radius:var(--r-md);gap:4px;width:100%;margin-bottom:16px;padding:4px;display:flex}@media (width>=900px){.tf-tabs:not(.bottom){width:auto;display:inline-flex}}.tf-tab{min-height:var(--tap);font-size:var(--t-md);cursor:pointer;color:var(--c-600);background:0 0;border:none;border-radius:7px;flex:1;justify-content:center;align-items:center;gap:7px;padding:8px 15px;font-weight:600;display:flex}@media (width>=900px){.tf-tabs:not(.bottom) .tf-tab{flex:none;justify-content:flex-start}}.tf-tab.active{background:var(--surface);color:var(--c-900);box-shadow:0 1px 3px #0000001f}.tf-tabs.bottom{z-index:40;background:var(--surface);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom));border-radius:0;grid-template-columns:repeat(4,1fr);gap:0;margin:0;display:grid;position:fixed;inset:auto 0 0}.tf-tabs.bottom .tf-tab{flex-direction:column;gap:3px;padding:6px 4px;font-size:11px}.tf-tabs.bottom .tf-tab.active{box-shadow:none;color:var(--accent);background:0 0}@media (width>=900px){.tf-tabs.bottom{display:none}}.tf-empty{background:var(--surface);border:1px dashed var(--border-dashed);border-radius:var(--r-xl);text-align:center;padding:48px 20px}@media (width>=900px){.tf-empty{padding:72px 24px}}.tf-empty-icon{background:var(--surface-tint-2);border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;margin:0 auto 18px;display:flex}.tf-empty-title{margin-bottom:9px;font-size:20px;font-weight:700}.tf-empty-desc{color:var(--c-500);max-width:380px;margin:0 auto 22px;font-size:14px;line-height:1.5}.tf-lanes{flex-direction:column;gap:18px;display:flex}.tf-lane-head{border-radius:var(--r-md);align-items:center;gap:10px;margin-bottom:10px;padding:9px 14px;display:flex}.tf-lane-label{font-size:14px;font-weight:700}.tf-lane-sub{font-size:var(--t-sm);opacity:.8}.tf-lane-count{background:#fffa;border-radius:20px;margin-left:auto;padding:2px 9px;font-size:12px;font-weight:600}.tf-lane-tasks{flex-direction:column;gap:8px;display:flex}.tf-task{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);align-items:flex-start;gap:12px;padding:13px 15px;display:flex}.tf-task:hover{border-color:var(--border-strong)}.tf-task.compact{padding:9px 12px}.tf-check{cursor:pointer;background:0 0;border:2px solid;border-radius:50%;flex:none;justify-content:center;align-items:center;width:19px;height:19px;margin-top:1px;padding:0;display:flex;position:relative}.tf-task-body{flex:1;min-width:0}.tf-task-title{font-size:var(--t-lg);font-weight:600}.tf-task-meta{font-size:var(--t-sm);color:var(--c-500);flex-wrap:wrap;align-items:center;gap:5px 12px;margin-top:6px;display:flex}.tf-meta-item{align-items:center;gap:6px;display:inline-flex}.tf-meta-sched{color:var(--accent);align-items:center;gap:5px;font-weight:600;display:inline-flex}.tf-meta-sched.missed{color:var(--red)}.tf-overdue-badge{color:var(--red);font-size:var(--t-sm);vertical-align:middle;background:#b91c1c1a;border-radius:999px;align-items:center;margin-left:8px;padding:1px 8px;font-weight:700;text-decoration:none;display:inline-flex}.tf-task-notes{font-size:var(--t-sm);color:var(--c-400);margin-top:7px;line-height:1.45}.tf-task-delete{color:var(--c-200);cursor:pointer;background:0 0;border:none;flex:none;padding:2px;line-height:0;position:relative}.tf-task-delete:hover{color:#e0533f}.tf-check:before,.tf-task-delete:before,.tf-modal-close:before,.tf-add-link:before,.tf-btn-text:before{content:"";position:absolute;inset:-11px}.tf-cal-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.tf-cal-range{color:var(--c-700);font-size:14px;font-weight:600}.tf-cal-daynav{align-items:center;gap:10px;display:flex}.tf-cal-nav-btn{border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface);min-width:36px;min-height:36px;color:var(--c-800);cursor:pointer;justify-content:center;align-items:center;display:flex}.tf-cal-nav-btn:disabled{opacity:.35;cursor:default}.tf-cal-hint{font-size:var(--t-sm);color:var(--c-400)}.tf-cal-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);overflow:auto}.tf-cal-grid{min-width:0;display:flex}@media (width>=900px){.tf-cal-grid{min-width:680px}}.tf-cal-hours{border-right:1px solid #0000000f;flex:none;width:56px}@media (width>=900px){.tf-cal-hours{width:52px}}.tf-cal-hours-head{border-bottom:1px solid #0000000f;height:46px;display:none}@media (width>=900px){.tf-cal-hours-head{display:block}}.tf-cal-hour{height:44px;color:var(--c-300);text-align:right;padding:2px 7px 0 0;font-size:11px}.tf-cal-day{border-right:1px solid #0000000f;flex:1;min-width:0}@media (width>=900px){.tf-cal-day{min-width:90px}}.tf-cal-day-head{border-bottom:1px solid #0000000f;flex-direction:column;justify-content:center;align-items:center;height:46px;display:none}@media (width>=900px){.tf-cal-day-head{display:flex}}.tf-cal-dow{text-transform:uppercase;letter-spacing:.03em;font-size:11px;font-weight:600}.tf-cal-num{font-size:16px;font-weight:700;line-height:1.1}.tf-cal-body{background-image:repeating-linear-gradient(#0000 0 43px,#0000000d 43px 44px);position:relative}.tf-cal-event{border-radius:var(--r-sm);border-left:3px solid;padding:4px 7px;position:absolute;left:4px;right:4px;overflow:hidden}.tf-cal-event-title{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:600;line-height:1.2;overflow:hidden}.tf-cal-event-time{opacity:.75;margin-top:1px;font-size:10.5px}.tf-cal-unavail{pointer-events:none;background:#0000000b;position:absolute;left:0;right:0}.tf-avail{flex-direction:column;gap:12px;display:flex}.tf-avail-day{flex-direction:column;gap:6px;display:flex}@media (width>=900px){.tf-avail-day{flex-direction:row;align-items:flex-start;gap:14px}}.tf-avail-day-label{width:40px;font-size:var(--t-md);color:var(--c-700);flex:none;padding-top:0;font-weight:600}@media (width>=900px){.tf-avail-day-label{padding-top:9px}}.tf-avail-day-body{flex-direction:column;flex:1;gap:8px;min-width:0;display:flex}.tf-avail-range{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.tf-avail-range .tf-field-sm{flex:1;min-width:88px}.tf-avail-range .tf-modal-close{flex:none;min-width:40px;min-height:40px}.tf-avail-dash{color:var(--c-300);flex:none}.tf-modal-overlay{z-index:50;background:#14181e8c;justify-content:center;align-items:flex-end;padding:0;animation:.15s tfFade;display:flex;position:fixed;inset:0}@media (width>=900px){.tf-modal-overlay{align-items:center;padding:24px}}.tf-modal{background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;width:100%;max-width:100%;max-height:92dvh;padding:20px 20px calc(20px + env(safe-area-inset-bottom));animation:.25s cubic-bezier(.2,.9,.3,1) tfSheet;overflow:auto;box-shadow:0 -8px 30px #0000002e}@media (width>=900px){.tf-modal{border-radius:18px;width:560px;padding:26px 28px;animation:.22s cubic-bezier(.2,.9,.3,1) tfPop;box-shadow:0 24px 60px #0000004d}}.tf-modal-head{justify-content:space-between;align-items:flex-start;margin-bottom:18px;display:flex}.tf-modal-title{letter-spacing:-.01em;font-size:20px;font-weight:700}.tf-modal-desc{font-size:var(--t-md);color:var(--c-500);margin-top:3px}.tf-modal-close{color:var(--c-300);cursor:pointer;background:0 0;border:none;margin-top:2px;padding:2px;line-height:0;position:relative}.tf-modal-close:hover{color:var(--c-900)}.tf-label{font-size:var(--t-md);margin-bottom:7px;font-weight:600;display:block}.tf-field{border:1px solid var(--border-input);border-radius:var(--r-lg);background:var(--surface);width:100%;padding:11px 13px;font-size:14px}.tf-field-mb-md{margin-bottom:16px}.tf-field-mb-lg{margin-bottom:18px}.tf-field-mb-xl{margin-bottom:22px}.tf-field-resize-v{resize:vertical}.tf-select{cursor:pointer}.tf-field-sm{border:1px solid var(--border-input);border-radius:var(--r-lg);width:100%;font-size:var(--t-md);color:var(--c-800);padding:10px 12px}.tf-grid-2{grid-template-columns:1fr;gap:16px;margin-bottom:14px;display:grid}@media (width>=900px){.tf-grid-2{grid-template-columns:1fr 1fr;gap:20px}}.tf-grid-2-tight{grid-template-columns:1fr;gap:14px;margin-bottom:16px;display:grid}@media (width>=900px){.tf-grid-2-tight{grid-template-columns:1fr 1fr;gap:16px}}.tf-slider-row{justify-content:space-between;align-items:baseline;margin-bottom:9px;display:flex}.tf-slider-label{font-size:var(--t-md);font-weight:600}.tf-slider-value{font-size:var(--t-sm);color:var(--c-500)}.tf-lane-pill{border-radius:var(--r-md);align-items:center;gap:9px;margin-bottom:20px;padding:11px 14px;display:flex}.tf-lane-pill-label{font-size:var(--t-md);font-weight:700}.tf-lane-pill-sub{font-size:var(--t-sm);opacity:.85}.tf-modal-actions{justify-content:flex-end;align-items:center;gap:14px;display:flex}.tf-modal-actions .tf-btn-submit{flex:1}@media (width>=900px){.tf-modal-actions .tf-btn-submit{flex:none}}.tf-toast{bottom:calc(84px + env(safe-area-inset-bottom));color:#fff;border-radius:var(--r-lg);font-size:var(--t-md);z-index:60;background:#222a35;align-items:center;gap:9px;max-width:calc(100vw - 32px);padding:12px 20px;font-weight:500;animation:.25s tfToast;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 12px 30px #00000047}@media (width>=900px){.tf-toast{bottom:26px}}.tf-messages{background:var(--surface);border-radius:var(--r-xl);height:calc(100dvh - 230px - env(safe-area-inset-bottom));flex-direction:column;gap:0;display:flex;overflow:hidden;box-shadow:0 1px 3px #00000014}@media (width>=900px){.tf-messages{flex-direction:row;gap:16px;height:560px}}.tf-messages-sidebar{background:var(--surface-tint);flex-direction:row;flex:none;gap:6px;width:auto;padding:8px;display:flex;overflow-x:auto}@media (width>=900px){.tf-messages-sidebar{flex-direction:column;width:180px;padding:10px;overflow:visible auto}}.tf-messages-thread{border-radius:var(--r-sm);color:var(--c-600);white-space:nowrap;text-align:left;cursor:pointer;background:0 0;border:none;flex:none;align-items:center;gap:8px;padding:9px 11px;font-size:13px;font-weight:600;display:flex}.tf-messages-thread.active{background:var(--surface);color:var(--c-900);box-shadow:0 1px 3px #0000001f}.tf-messages-main{flex-direction:column;flex:1;min-width:0;min-height:0;padding:12px 14px;display:flex}@media (width>=900px){.tf-messages-main{padding:14px 18px}}.tf-messages-token,.tf-messages-enable-push{font-size:var(--t-sm);color:var(--c-600);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.tf-messages-token input{border-radius:var(--r-sm);border:1px solid var(--border-input);flex:1;min-width:120px;padding:6px 9px}.tf-messages-enable-push{border:1px solid var(--border-input);background:var(--surface-tint-3);cursor:pointer;border-radius:7px;align-self:flex-start;padding:6px 12px}.tf-messages-token button{border-radius:var(--r-sm);border:1px solid var(--border-input);background:var(--surface-tint-3);cursor:pointer;padding:6px 12px}.tf-messages-error{color:var(--red);font-size:var(--t-sm);background:#b91c1c12;border:1px solid #b91c1c40;border-radius:7px;margin-bottom:10px;padding:7px 11px}.tf-messages-composer button:disabled{opacity:.45;cursor:not-allowed}.tf-messages-list{flex-direction:column;flex:1;gap:8px;min-height:0;padding:6px 2px;display:flex;overflow-y:auto}.tf-messages-bubble{background:var(--surface-tint-3);max-width:88%;font-size:var(--t-md);border-radius:12px;align-items:flex-start;gap:8px;padding:8px 12px;line-height:1.4;display:flex}@media (width>=900px){.tf-messages-bubble{max-width:80%}}.tf-messages-bubble.mine{background:var(--accent);color:#fff;align-self:flex-end}.tf-messages-badge{flex-shrink:0}.tf-messages-composer{gap:8px;margin-top:10px;display:flex}.tf-messages-oneway{border:1px dashed var(--border-dashed);background:var(--surface-tint-3);color:var(--c-600);font-size:var(--t-sm);border-radius:8px;margin-top:10px;padding:10px 13px;line-height:1.45}.tf-messages-composer input{border:1px solid var(--border-input);border-radius:8px;flex:1;padding:9px 12px}.tf-messages-composer button{min-height:var(--tap);background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:9px 16px;font-weight:600}
