:root{--bg: #FFFFFF;--surface: #FAFAFA;--surface-2: #F4F4F5;--border: #E5E5E5;--border-soft: #F1F1F2;--text: #1A1A1A;--text-2: #5F6368;--text-3: #A0A0A0;--acc-findem: #FF9500;--acc-jones: #10B981;--acc-personal: #6366F1;--success: #10B981;--warning: #F59E0B;--error: #EF4444;--tint-blue: #EFF6FF;--tint-green: #F0FDF4;--tint-amber: #FFFBEB;--tint-red: #FEF2F2;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-pill: 999px;--shadow-sm: 0 1px 2px rgba(15,15,15,.04), 0 1px 3px rgba(15,15,15,.04);--shadow-md: 0 4px 12px rgba(15,15,15,.06), 0 1px 3px rgba(15,15,15,.04);--shadow-pop: 0 12px 32px rgba(15,15,15,.12), 0 2px 6px rgba(15,15,15,.06);--t-fast: .1s ease-out;--t: .15s ease-out;--t-slow: .22s cubic-bezier(.2,.7,.2,1)}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--surface);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;letter-spacing:-.005em}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;padding:0}input,textarea,select{font-family:inherit;color:inherit}::selection{background:#3b82f62e}.app{min-height:100vh;display:flex;flex-direction:column;background:var(--surface)}.topbar{background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:30;-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px)}.topbar-inner{max-width:1100px;margin:0 auto;padding:14px 28px;display:flex;align-items:center;gap:32px}.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.02em;font-size:15px}.brand-dot{width:22px;height:22px;border-radius:7px;background:linear-gradient(135deg,#1a1a1a,#3f3f46);display:grid;place-items:center;color:#fff;font-size:12px;font-weight:700}.nav{display:flex;gap:4px;align-items:center}.nav button{padding:8px 14px;border-radius:var(--r-md);color:var(--text-2);font-size:14px;font-weight:500;transition:background var(--t-fast),color var(--t-fast)}.nav button:hover{background:var(--surface-2);color:var(--text)}.nav button.active{background:#1a1a1a;color:#fff}.hub-dropdown{position:absolute;top:calc(100% + 6px);left:0;min-width:160px;background:var(--bg);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-pop);padding:4px;z-index:40}.hub-dropdown-item{display:block;width:100%;text-align:left;padding:8px 12px;font-size:13px;font-weight:500;color:var(--text);border-radius:6px;transition:background var(--t-fast)}.hub-dropdown-item:hover{background:var(--surface)}.hub-dropdown-item.is-active{background:var(--surface-2);font-weight:600}.mobile-nav{display:none;position:relative}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px;color:var(--text-2);font-size:13px}.nav--right{gap:4px}.nav-divider{width:1px;height:20px;background:var(--border)}.kbd{font-family:var(--mono);font-size:11px;background:var(--surface-2);border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;padding:1px 6px;color:var(--text-2)}.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#3b82f6,#8b5cf6);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:600;letter-spacing:0;cursor:pointer;transition:box-shadow var(--t-fast),transform var(--t-fast)}.avatar:hover{box-shadow:0 0 0 3px #0f0f0f14}.avatar.is-active{box-shadow:0 0 0 3px #0f0f0f2e}.avatar-menu{position:absolute;top:calc(100% + 10px);right:0;width:240px;background:var(--bg);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-pop);padding:6px;z-index:80}.avatar-menu-head{padding:10px 12px 12px;border-bottom:1px solid var(--border-soft);margin-bottom:6px}.avatar-menu-list{display:flex;flex-direction:column}.avatar-menu-list button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border-radius:8px;font-size:13px;color:var(--text);transition:background var(--t-fast)}.avatar-menu-list button:hover{background:var(--surface)}.avatar-menu-list button svg{color:var(--text-2);flex-shrink:0}.avatar-menu-divider{height:1px;background:var(--border-soft);margin:6px 4px}.page{max-width:1100px;margin:0 auto;padding:32px 28px 96px;width:100%}.page--narrow{max-width:640px}h1.page-title{font-size:30px;font-weight:700;letter-spacing:-.025em;margin:0 0 4px;color:var(--text)}.page-sub{color:var(--text-2);font-size:14px;margin:0 0 28px}.section-title{font-size:13px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-2);margin:0 0 12px}.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow-sm)}.card+.card{margin-top:14px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--r-md);font-size:13px;font-weight:500;background:var(--bg);border:1px solid var(--border);color:var(--text);transition:background var(--t-fast),border-color var(--t-fast),transform var(--t-fast)}.btn:hover{background:var(--surface)}.btn:active{transform:translateY(.5px)}.btn-primary{background:#1a1a1a;color:#fff;border-color:#1a1a1a}.btn-primary:hover{background:#2a2a2a}.btn-primary:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}.btn-text{border:none;background:transparent;color:var(--text-2);padding:6px 8px;font-size:13px;border-radius:var(--r-sm)}.btn-text:hover{background:var(--surface-2);color:var(--text)}.btn-link{color:var(--acc-findem);font-weight:600;font-size:13px;background:none;border:none}.btn-link:hover{text-decoration:underline}.cb{width:20px;height:20px;border-radius:6px;border:1.5px solid #D4D4D8;background:var(--bg);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:background var(--t),border-color var(--t),transform var(--t-fast);cursor:pointer;position:relative}.cb:hover{border-color:var(--text-2)}.cb svg{opacity:0;transform:scale(.6);transition:opacity var(--t),transform var(--t)}.cb.is-checked{background:var(--text);border-color:var(--text)}.cb.is-checked svg{opacity:1;transform:scale(1);color:#fff}.cb--sm{width:18px;height:18px;border-radius:5px}.cb--xs{width:16px;height:16px;border-radius:5px}.cb--circle{border-radius:50%}.cb[data-acc=findem].is-checked{background:var(--acc-findem);border-color:var(--acc-findem)}.cb[data-acc=jones].is-checked{background:var(--acc-jones);border-color:var(--acc-jones)}.cb[data-acc=personal].is-checked{background:var(--acc-personal);border-color:var(--acc-personal)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.dot--findem{background:var(--acc-findem)}.dot--jones{background:var(--acc-jones)}.dot--personal{background:var(--acc-personal)}.dot--lg{width:10px;height:10px}.pill{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);color:var(--text);border:1px solid var(--border-soft);font-size:12.5px;font-weight:500;padding:5px 11px;border-radius:var(--r-pill);white-space:nowrap;transition:background var(--t-fast)}.pill:hover{background:#ececee}.pill .pill-x{margin-left:2px;width:14px;height:14px;border-radius:50%;display:grid;place-items:center;color:var(--text-3);font-size:12px}.pill .pill-x:hover{background:var(--bg);color:var(--text)}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--r-pill);font-size:11.5px;font-weight:600;letter-spacing:.01em;white-space:nowrap}.badge--green{background:var(--tint-green);color:#047857}.badge--amber{background:var(--tint-amber);color:#b45309}.badge--red{background:var(--tint-red);color:#b91c1c}.badge--grey{background:var(--surface-2);color:var(--text-2)}.input{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:var(--r-md);font-size:14px;background:var(--bg);transition:border-color var(--t),background var(--t);outline:none;color:var(--text)}.input:focus{border-color:var(--text)}.input::placeholder{color:var(--text-3)}.input--underline{border:none;border-bottom:1px solid var(--border);border-radius:0;padding:10px 0;background:transparent}.input--underline:focus{border-bottom-color:var(--text)}textarea.input{resize:vertical;min-height:64px;line-height:1.55}textarea.input.is-filled{background:var(--tint-blue);border-color:#3b82f640}textarea.input.is-filled--green{background:var(--tint-green);border-color:#10b98140}.bar{width:100%;height:4px;background:var(--surface-2);border-radius:4px;overflow:hidden}.bar>span{display:block;height:100%;border-radius:4px;background:#9ca3af;transition:width var(--t-slow),background var(--t)}.bar--lg{height:6px;border-radius:6px}.bar--lg>span{border-radius:6px}.bar.is-good>span{background:var(--success)}.bar.is-warn>span{background:#9ca3af}.bar.is-bad>span{background:#9ca3af}.row{display:flex;align-items:center;gap:10px}.col{display:flex;flex-direction:column;gap:10px}.spacer{flex:1}.muted{color:var(--text-2)}.tiny{font-size:12px;color:var(--text-2)}.divider{height:1px;background:var(--border-soft);margin:18px 0}.fade-in{animation:fadeIn .26s cubic-bezier(.2,.7,.2,1)}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes ptr-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.todo-list{display:flex;flex-direction:column;gap:8px}.todo{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--bg);box-shadow:var(--shadow-sm);transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast);position:relative}.todo:hover{border-color:#d4d4d8}.todo-main{flex:1;min-width:0}.todo-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.todo-title{font-size:14.5px;font-weight:500;color:var(--text)}.todo.is-done .todo-title{color:var(--text-2);text-decoration:line-through}.todo.is-done{opacity:.7}.todo-meta{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--text-2);margin-top:4px}.todo-meta .meta-due.is-overdue{color:var(--error);font-weight:500}.due-bubbles{display:flex;gap:5px;margin-top:6px;flex-wrap:wrap}.due-bubble{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:500;padding:3px 9px;border-radius:20px;border:1.5px solid var(--border-soft);background:transparent;color:var(--text-3);cursor:pointer;transition:border-color .1s,color .1s,background .1s;line-height:1}.due-bubble:hover{border-color:var(--border);color:var(--text-2);background:var(--surface-2)}.due-bubble.is-active{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.todo-actions{display:flex;align-items:center;gap:2px;opacity:0;transition:opacity var(--t-fast)}.todo:hover .todo-actions{opacity:1}.todo-actions button{width:26px;height:26px;border-radius:6px;display:grid;place-items:center;color:var(--text-2);font-size:14px}.todo-actions button:hover{background:var(--surface-2);color:var(--text)}.todo-actions button.is-on{color:var(--text)}.subtasks{margin:8px 0 0 8px;padding-left:16px;border-left:1.5px dashed var(--border);display:flex;flex-direction:column;gap:6px}.subtask{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text);padding:3px 0}.subtask.is-done{color:var(--text-2);text-decoration:line-through;opacity:.7}.subtask-add{font-size:12.5px;color:var(--text-3);padding:3px 0;display:flex;align-items:center;gap:8px}.overdue-dot{width:7px;height:7px;border-radius:50%;background:var(--error);box-shadow:0 0 0 4px #ef444429;margin-right:-2px}.filter-row{display:flex;align-items:center;gap:6px}.filter-btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--border);border-radius:var(--r-md);font-size:12px;font-weight:500;color:var(--text-2);background:var(--bg);transition:all var(--t-fast)}.filter-btn:hover{color:var(--text)}.filter-btn.is-active{background:#1a1a1a;color:#fff;border-color:#1a1a1a}.filter-btn.is-active .dot{box-shadow:0 0 0 2px #ffffff4d}.filter-btn--dot{width:30px;height:30px;padding:0;display:grid;place-items:center;border-radius:var(--r-pill)}.todo-add{border:1px dashed var(--border);background:var(--bg);box-shadow:none;cursor:text;transition:background var(--t-fast),border-color var(--t-fast),box-shadow var(--t-fast)}.todo-add:hover{border-color:var(--text-2)}.todo-add.is-open{background:var(--bg);border-color:var(--text);border-style:solid;box-shadow:var(--shadow-sm)}.todo-add-plus{width:20px;height:20px;border-radius:50%;border:1.5px dashed var(--text-3);display:grid;place-items:center;color:var(--text-3);flex-shrink:0;transition:color var(--t-fast),border-color var(--t-fast),background var(--t-fast)}.todo-add:hover .todo-add-plus,.todo-add.is-open .todo-add-plus{border-color:var(--text);color:var(--text);border-style:solid}.todo-add-input{width:100%;border:none;outline:none;background:transparent;font-size:14.5px;color:var(--text);padding:0;line-height:1.5}.todo-add-input::placeholder{color:var(--text-3)}.todo-add-expand{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border);display:flex;flex-direction:column;gap:12px}.todo-add-details{width:100%;border:none;outline:none;background:transparent;font-size:13px;color:var(--text);padding:0}.todo-add-details::placeholder{color:var(--text-3)}.todo-add-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.acc-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:var(--r-pill);background:var(--surface);border:1px solid var(--border-soft);font-size:12px;font-weight:500;color:var(--text-2);transition:all var(--t-fast)}.acc-chip:hover{color:var(--text);background:var(--surface-2)}.acc-chip.is-on{background:var(--text);color:#fff;border-color:var(--text)}.acc-chip.is-on .dot{box-shadow:0 0 0 1.5px #ffffff4d}.todo-divider{height:1px;background:var(--border-soft);margin:8px 12px}.todo.is-selected{background:#6c63ff0d;border-color:#6c63ff4d}.todo-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:200;background:var(--bg);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #0000001f;min-width:160px;padding:4px;display:flex;flex-direction:column}.todo-menu button{text-align:left;padding:8px 12px;font-size:13px;color:var(--text);border-radius:6px;width:100%}.todo-menu button:hover{background:var(--surface-2)}.todo-menu button.is-danger{color:var(--error)}.todo-menu-sep{height:1px;background:var(--border-soft);margin:3px 8px}.bulk-bar{position:fixed;bottom:24px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--bg);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 28px #00000024;z-index:300;white-space:nowrap;animation:toast-in .18s ease}.tdx-page{--tdx-brand: #6C63FF}.tdx-tabs{display:flex;gap:22px;border-bottom:1px solid var(--border);margin-bottom:20px}.tdx-tab{display:inline-flex;align-items:center;gap:6px;padding:0 0 10px;border:none;background:transparent;font-size:13.5px;font-weight:500;color:var(--text-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--t-fast)}.tdx-tab:hover{color:var(--text-2)}.tdx-tab.is-on{color:var(--tdx-brand);border-bottom-color:var(--tdx-brand)}.tdx-tab-badge{font-size:10px;font-weight:700;min-width:16px;height:16px;padding:0 4px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);color:var(--text-2)}.tdx-tab.is-on .tdx-tab-badge{background:var(--tdx-brand);color:#fff}.tdx-label-filters{display:flex;flex-wrap:wrap;gap:6px;padding:10px 0 4px}.tdx-label-filter{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;padding:3px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface-1);color:var(--text-2);cursor:pointer;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast)}.tdx-label-filter:hover{background:var(--surface-2);color:var(--text-1)}.tdx-label-filter.is-on{background:var(--tdx-brand);color:#fff;border-color:var(--tdx-brand)}.tdx-board{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}.tdx-col{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);display:flex;flex-direction:column;min-height:120px;overflow:hidden}.tdx-col-head{display:flex;align-items:center;gap:8px;padding:14px 14px 10px}.tdx-col-name{font-size:13px;font-weight:600;color:var(--text)}.tdx-col-count{margin-left:auto;font-size:11px;font-weight:600;color:var(--text-3);background:var(--surface-2);border-radius:999px;padding:1px 8px}.tdx-add{display:flex;align-items:center;gap:8px;margin:0 10px 6px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface)}.tdx-add-icon{color:var(--text-3);display:flex;flex-shrink:0}.tdx-add-input,.tdx-focus-add input,.tdx-sub-add input{flex:1;border:none;background:transparent;outline:none;font-family:var(--font);font-size:13.5px;color:var(--text)}.tdx-add-input::placeholder,.tdx-focus-add input::placeholder,.tdx-sub-add input::placeholder{color:var(--text-3)}.tdx-col-list{padding:0 6px 6px;display:flex;flex-direction:column}.tdx-col-empty{padding:16px 12px;text-align:center;color:var(--text-3);font-size:12.5px}.tdx-task{border-radius:var(--r-md);margin:1px 0}.tdx-task:not(.is-done):hover{background:var(--surface)}.tdx-task.is-expanded{background:var(--surface)}.tdx-task-head{display:flex;align-items:center;gap:9px;padding:8px}.tdx-check{flex-shrink:0;width:19px;height:19px;border-radius:50%;border:1.5px solid var(--border);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:all var(--t-fast)}.tdx-check>svg{opacity:0}.tdx-check.is-checked>svg{opacity:1}.tdx-check:hover{border-color:var(--text-3)}.tdx-check.is-checked{border:none}.tdx-check[data-acc=findem].is-checked{background:var(--acc-findem)}.tdx-check[data-acc=jones].is-checked{background:var(--acc-jones)}.tdx-check[data-acc=personal].is-checked{background:var(--acc-personal)}.tdx-check-sm{width:16px;height:16px}.tdx-task-body{flex:1;min-width:0;display:flex;align-items:flex-start;gap:7px;cursor:pointer;flex-wrap:wrap}.tdx-title{font-size:13.5px;color:var(--text);word-break:break-word}.tdx-task.is-done .tdx-title{color:var(--text-3);text-decoration:line-through}.tdx-title-input{flex:1;border:none;border-bottom:1.5px solid var(--tdx-brand);outline:none;font-size:13.5px;background:transparent;font-family:var(--font);color:var(--text);padding:0}.tdx-flag{color:var(--text-3);font-size:11px;flex-shrink:0}.tdx-now{flex-shrink:0;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--tdx-brand);background:#6c63ff1a;border-radius:4px;padding:1px 5px}.tdx-label{flex-shrink:0;font-size:9.5px;font-weight:500;text-transform:uppercase;letter-spacing:.03em;color:var(--text-2);background:var(--surface-2);border-radius:4px;padding:1px 5px}.tdx-due{flex-shrink:0;font-size:11px;font-weight:500;color:var(--text-2);background:var(--surface-2);border-radius:999px;padding:2px 8px;white-space:nowrap}.tdx-due.is-overdue{background:var(--tint-red);color:var(--error)}.tdx-sub-count{flex-shrink:0;font-size:11px;color:var(--text-3)}.tdx-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--t-fast)}.tdx-task:hover .tdx-actions{opacity:1}.tdx-act{width:24px;height:24px;border:none;background:transparent;cursor:pointer;color:var(--text-3);border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;transition:all var(--t-fast)}.tdx-act:hover{background:var(--surface-2);color:var(--text)}.tdx-act.is-on{color:var(--warning)}.tdx-menu{position:absolute;right:0;top:calc(100% + 4px);z-index:200;background:var(--bg);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-pop);min-width:168px;padding:4px;display:flex;flex-direction:column}.tdx-menu button{text-align:left;padding:7px 11px;font-size:12.5px;color:var(--text);border-radius:6px;background:transparent;border:none;cursor:pointer}.tdx-menu button:hover{background:var(--surface-2)}.tdx-menu button.is-danger{color:var(--error)}.tdx-menu-sep{height:1px;background:var(--border-soft);margin:3px 6px}.tdx-editor{padding:2px 10px 12px 36px;display:flex;flex-direction:column;gap:10px}.tdx-pills{display:flex;gap:5px;flex-wrap:wrap}.tdx-pill{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:999px;border:1px solid var(--border);background:var(--bg);color:var(--text-2);cursor:pointer;font-size:11px;font-weight:600;font-family:var(--font);transition:all var(--t-fast)}.tdx-pill:hover{border-color:var(--text-3);color:var(--text)}.tdx-pill.is-on{border-color:var(--tdx-brand);background:#6c63ff14;color:var(--tdx-brand)}.tdx-pill.icon-only{width:26px;height:24px;padding:0;justify-content:center}.tdx-pill.park-pill{color:#d97706;border-color:#d977064d;background:#d9770612}.tdx-pill.park-pill.is-on{background:#d9770629;border-color:#d97706;color:#d97706}.tdx-pill.del-pill{color:var(--text-3);margin-left:auto}.tdx-pill.del-pill:hover{color:var(--error);border-color:var(--error)}.tdx-datepick{display:flex;align-items:center;gap:8px}.tdx-datepick input{border:1px solid var(--border);border-radius:var(--r-sm);padding:4px 8px;font-size:12.5px;color:var(--text);background:var(--surface);font-family:var(--font)}.tdx-link-danger{background:none;border:none;color:var(--error);font-size:12px;cursor:pointer}.tdx-notes{width:100%;border:1px solid var(--border-soft);border-radius:var(--r-sm);background:var(--bg);padding:7px 9px;font-family:var(--font);font-size:12.5px;color:var(--text);outline:none;resize:vertical;min-height:34px}.tdx-notes:focus{border-color:var(--tdx-brand)}.tdx-notes::placeholder{color:var(--text-3)}.tdx-subs{display:flex;flex-direction:column;gap:4px}.tdx-sub{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text)}.tdx-sub.is-done span{color:var(--text-3);text-decoration:line-through}.tdx-sub-add{display:flex;align-items:center;gap:8px;color:var(--text-3)}.tdx-subs-inline{display:flex;flex-direction:column;gap:2px;padding:0 8px 6px 36px}.tdx-sub-inline{display:flex;align-items:flex-start;gap:8px;padding:3px 0}.tdx-sub-inline-text{font-size:12.5px;color:var(--text);word-break:break-word}.tdx-sub-inline.is-done .tdx-sub-inline-text{color:var(--text-3);text-decoration:line-through}.tdx-check-sm{position:relative}.tdx-check-sm:before{content:"";position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}.tdx-done{border-top:1px solid var(--border-soft);padding:6px}.tdx-done-toggle{display:flex;align-items:center;gap:6px;width:100%;background:transparent;border:none;cursor:pointer;padding:6px;font-size:11.5px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.04em}.tdx-focus{max-width:460px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.tdx-chips{display:flex;gap:10px}.tdx-chip{flex:1;padding:12px 8px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--bg);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;transition:all var(--t-fast);font-family:var(--font)}.tdx-chip:hover{border-color:var(--text-3)}.tdx-chip.is-on{border-color:var(--tdx-brand);background:#6c63ff0f}.tdx-chip-time{font-size:15px;font-weight:600;color:var(--text)}.tdx-chip.is-on .tdx-chip-time{color:var(--tdx-brand)}.tdx-chip-label{font-size:10.5px;color:var(--text-3)}.tdx-focus-add{display:flex;align-items:center;gap:8px;padding:11px 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg)}.tdx-focus-acc{display:flex;gap:4px}.tdx-acc-dot{border:none;background:transparent;cursor:pointer;padding:3px;border-radius:50%;opacity:.4;transition:opacity var(--t-fast);display:flex}.tdx-acc-dot.is-on{opacity:1;box-shadow:0 0 0 1.5px var(--border) inset}.tdx-focus-list{display:flex;flex-direction:column;gap:1px}.tdx-focus-empty{text-align:center;color:var(--text-3);font-size:13px;padding:8px 0}.tdx-focus-task{display:flex;align-items:center;gap:10px;padding:9px 8px;border-radius:var(--r-sm)}.tdx-focus-task:hover{background:var(--surface)}.tdx-focus-task.is-done .tdx-focus-task-text{color:var(--text-3);text-decoration:line-through}.tdx-focus-task-text{flex:1;font-size:14px;color:var(--text)}.tdx-focus-remove{width:22px;height:22px;border:none;background:transparent;color:var(--text-3);cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;opacity:0;transition:all var(--t-fast)}.tdx-focus-task:hover .tdx-focus-remove{opacity:1}.tdx-focus-remove:hover{background:var(--tint-red);color:var(--error)}.tdx-focus-start{padding:13px;border-radius:var(--r-md);border:none;background:var(--tdx-brand);color:#fff;cursor:pointer;font-family:var(--font);font-size:14px;font-weight:600;transition:filter var(--t-fast)}.tdx-focus-start:hover{filter:brightness(1.05)}.tdx-focus-start:disabled{background:var(--surface-2);color:var(--text-3);cursor:default}.tdx-timer-card{border:1px solid var(--border);border-radius:var(--r-lg);padding:22px 18px;display:flex;flex-direction:column;gap:14px;background:var(--bg);box-shadow:var(--shadow-sm)}.tdx-timer-top{display:flex;flex-direction:column;align-items:center;gap:4px}.tdx-timer-phase{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--tdx-brand)}.tdx-timer-phase.is-break{color:var(--success)}.tdx-timer-time{font-size:52px;font-weight:700;color:var(--text);letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1}.tdx-timer-meta{font-size:12.5px;color:var(--text-2)}.tdx-progress{height:6px;border-radius:999px;background:var(--surface-2);overflow:hidden}.tdx-progress-fill{height:100%;background:var(--tdx-brand);border-radius:999px;transition:width 1s linear}.tdx-progress-fill.is-break{background:var(--success)}.tdx-timer-controls{display:flex;gap:8px}.tdx-timer-btn{flex:1;padding:10px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);cursor:pointer;font-family:var(--font);font-size:13px;font-weight:500;color:var(--text-2);transition:all var(--t-fast)}.tdx-timer-btn:hover{border-color:var(--text-3);color:var(--text)}.tdx-timer-btn.is-danger:hover{border-color:var(--error);color:var(--error)}.tdx-pomo{text-align:center;font-size:14px}.tdx-break-btn{width:100%;padding:12px;border-radius:var(--r-md);border:1px solid var(--tdx-brand);background:#6c63ff14;color:var(--tdx-brand);cursor:pointer;font-family:var(--font);font-size:14px;font-weight:600;transition:all var(--t-fast)}.tdx-break-btn:hover{background:var(--tdx-brand);color:#fff}.tdx-new-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);text-align:center}.tdx-session-opts{display:flex;gap:8px}.tdx-session-opt{flex:1;padding:11px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);cursor:pointer;font-family:var(--font);font-size:13px;font-weight:500;color:var(--text);transition:all var(--t-fast)}.tdx-session-opt:hover{border-color:var(--text-3)}@media (max-width: 820px){.tdx-board{grid-template-columns:1fr}.tdx-focus{max-width:100%}}.habits-table{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);overflow-x:auto;box-shadow:var(--shadow-sm)}.habits-table table{width:100%;min-width:640px;border-collapse:collapse}.habits-table th,.habits-table td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--border-soft);vertical-align:middle}.habits-table thead th{background:var(--surface);font-size:12px;font-weight:600;color:var(--text-2);letter-spacing:0;text-transform:none;position:sticky;top:0;border-bottom:1px solid var(--border);padding:10px 12px}.habits-table th .habit-name{color:var(--text);font-size:13px;font-weight:600}.habits-table th .habit-goal{color:var(--text-3);font-size:11px;font-weight:500;margin-top:2px}.habits-table tbody tr:last-child td{border-bottom:none}.habits-table tbody tr:hover td{background:var(--surface)}.habits-table .col-day{white-space:nowrap;padding:9px 12px}.habits-table .col-day .day-pill{display:inline-block;font-size:13px;font-weight:500;color:var(--text-2);padding:4px 10px;border-radius:var(--r-pill);background:var(--surface)}.habits-table .col-day.is-today .day-pill{background:var(--text);color:#fff;font-weight:600}.habits-table tbody tr.is-today td{background:#0f0f0f06}.habits-table tbody tr.is-today td.col-day{background:transparent}.habits-table .routine-head-th{position:relative;overflow:visible}.routine-head-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:4px 8px;border-radius:8px;transition:background var(--t-fast);cursor:pointer;font:inherit;color:var(--text);max-width:100%}.routine-head-btn:hover{background:var(--surface-2)}.routine-head-btn.is-icon{padding:4px 6px}.routine-head-btn .routine-emoji{font-size:20px;line-height:1}.routine-editor{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);width:260px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:14px;z-index:60;text-align:left;font-weight:400;text-transform:none;letter-spacing:0}.routine-editor:before{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%) rotate(45deg);width:10px;height:10px;background:var(--bg);border-top:1px solid var(--border);border-left:1px solid var(--border)}.routine-editor .re-field{margin-bottom:12px}.routine-editor .re-field label{display:block;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-2);margin-bottom:6px}.routine-editor .re-toggle{display:inline-flex;border:1px solid var(--border);border-radius:var(--r-md);padding:2px;background:var(--surface)}.routine-editor .re-toggle button{padding:5px 14px;font-size:12.5px;font-weight:500;color:var(--text-2);border-radius:6px;transition:all var(--t-fast)}.routine-editor .re-toggle button.is-on{background:var(--bg);color:var(--text);font-weight:600;box-shadow:var(--shadow-sm)}.routine-editor .re-emoji-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px}.routine-editor .re-emoji{font-size:18px;height:32px;border-radius:6px;border:1px solid transparent;transition:all var(--t-fast)}.routine-editor .re-emoji:hover{background:var(--surface)}.routine-editor .re-emoji.is-on{background:var(--surface-2);border-color:var(--text)}.routine-editor .re-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:14px}.habits-table .is-track-only{opacity:.55}.habits-table thead .is-track-only{opacity:1}.track-only-label{display:block;font-size:9.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3);margin-top:2px}.routine-add-btn{width:26px;height:26px;border-radius:50%;border:1.5px dashed var(--border);color:var(--text-3);display:grid;place-items:center;transition:all var(--t-fast)}.routine-add-btn:hover{border-color:var(--text);color:var(--text);border-style:solid;background:var(--surface)}.habits-table .col-date{font-weight:500;color:var(--text);white-space:nowrap;font-variant-numeric:tabular-nums}.habits-table .col-date .day-name{color:var(--text-3);font-weight:400;margin-right:4px}.habits-table .col-habit{white-space:nowrap}.habits-table .col-habit .habit-row-name{font-size:14px;font-weight:500;color:var(--text)}.habits-table .col-habit .habit-row-meta{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap}.habits-table .col-habit .habit-row-goal{font-size:11.5px;color:var(--text-3)}.habits-table .col-habit .goal-tag{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;color:var(--text);background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-pill);white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}.habits-table .day-head .day-letter{font-size:12px;font-weight:600;color:var(--text-2);width:22px;height:22px;border-radius:50%;display:inline-grid;place-items:center;margin:0 auto}.habits-table .day-head.is-today .day-letter{background:var(--text);color:#fff}.habits-table .cb-cell.is-today{background:#3b82f60a}.habits-table .cb-cell{text-align:center;padding:9px 6px}.habits-table .col-pct{font-variant-numeric:tabular-nums;font-size:12.5px;color:var(--text-2);min-width:110px}.habits-table .col-pct .pct-row{display:flex;align-items:center;gap:8px}.habits-table .col-pct .pct-num{font-weight:600;color:var(--text);min-width:32px}.habits-table .col-pct .pct-perc{font-weight:600;color:var(--text);min-width:36px;text-align:right}.goal-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow-sm);margin-bottom:12px;transition:border-color var(--t-fast),background var(--t-fast)}.goal-card:hover{border-color:#d4d4d8}.goal-card .goal-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:14px}.goal-card .goal-name{font-size:17px;font-weight:600;letter-spacing:-.015em;margin:0;flex:1}.goal-card .goal-target{font-size:12.5px;color:var(--text-2);margin-top:4px}.goal-card .habit-bubbles{display:flex;flex-wrap:wrap;gap:6px}.kebab{width:28px;height:28px;border-radius:6px;color:var(--text-2);display:grid;place-items:center;font-size:16px;letter-spacing:1px}.kebab:hover{background:var(--surface-2);color:var(--text)}.wam-hero{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);padding:28px;box-shadow:var(--shadow-sm);margin-bottom:18px}.wam-hero .wam-num{font-size:56px;font-weight:700;letter-spacing:-.04em;font-variant-numeric:tabular-nums;line-height:1}.wam-hero.is-good .wam-num{color:var(--success)}.wam-hero.is-warn .wam-num{color:var(--warning)}.wam-hero.is-bad .wam-num{color:var(--error)}.wam-hero .wam-meta{color:var(--text-2);font-size:13px;margin-top:6px}.habit-perf{display:grid;grid-template-columns:1fr 50px 1fr 110px;gap:14px;align-items:center;padding:12px 4px;border-bottom:1px solid var(--border-soft)}.habit-perf:last-child{border-bottom:none}.habit-perf .hp-name{font-size:14px;font-weight:500}.habit-perf .hp-pct{font-variant-numeric:tabular-nums;font-weight:600;font-size:14px}.habit-perf .hp-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.habit-perf .hp-tag{display:inline-flex;align-items:center;padding:2px 8px;font-size:11.5px;font-weight:500;color:var(--text);background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-pill);white-space:nowrap}.subtabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:28px}.subtabs button{padding:12px 18px;font-size:13.5px;font-weight:500;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--t-fast),border-color var(--t-fast)}.subtabs button:hover{color:var(--text)}.subtabs button.active{color:var(--text);font-weight:600;border-bottom-color:var(--text)}.chart{display:flex;align-items:flex-end;gap:8px;height:160px;padding:12px 4px 0}.chart .bar-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.chart .bar-fill{width:100%;max-width:28px;background:var(--surface-2);border-radius:6px 6px 2px 2px;position:relative;transition:height var(--t-slow)}.chart .bar-fill.is-good{background:linear-gradient(180deg,#34d399,#10b981)}.chart .bar-fill.is-warn{background:linear-gradient(180deg,#d1d5db,#9ca3af)}.chart .bar-fill.is-current{box-shadow:0 0 0 2px var(--text)}.chart .bar-label{font-size:10.5px;color:var(--text-3);font-variant-numeric:tabular-nums}.chart .bar-val{font-size:10.5px;color:var(--text-2);font-weight:600;font-variant-numeric:tabular-nums}.completion-banner{position:fixed;top:80px;left:50%;transform:translate(-50%);background:var(--bg);border:1px solid var(--success);color:#047857;padding:10px 18px;border-radius:var(--r-pill);font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:8px;z-index:50;box-shadow:var(--shadow-pop);animation:bannerIn .32s cubic-bezier(.2,.7,.2,1)}@keyframes bannerIn{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}.emoji-rain{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:60}.emoji-rain span{position:absolute;left:50%;top:65%;-webkit-user-select:none;user-select:none;will-change:transform,opacity;animation:burst var(--dur, 2.4s) cubic-bezier(.15,.6,.35,1) both}.emoji-rain .confetti-piece{position:absolute;left:50%;top:65%;will-change:transform,opacity;animation:confetti-fly var(--dur, 2.4s) cubic-bezier(.15,.6,.35,1) both,confetti-spin var(--sd, .32s) linear infinite}@keyframes burst{0%{transform:translate(-50%,-50%) scale(0) rotate(0);opacity:1}5%{transform:translate(-50%,-50%) scale(2.5) rotate(calc(var(--r) * .01));opacity:1}35%{transform:translate(calc(-50% + var(--tx) * 1.15),calc(-50% + var(--ty) * .5)) scale(1.2) rotate(calc(var(--r) * .25));opacity:1}55%{transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty) * 1.4)) scale(.6) rotate(calc(var(--r) * .6));opacity:1}to{transform:translate(calc(-50% + var(--tx) * .6),calc(-50% + var(--ty) * 2.2)) scale(.01) rotate(var(--r));opacity:0}}@keyframes confetti-fly{0%{translate:-50% -50%;scale:0;opacity:1}5%{translate:-50% -50%;scale:1.5;opacity:1}35%{translate:calc(-50% + var(--tx) * 1.15) calc(-50% + var(--ty) * .5);scale:1;opacity:1}55%{translate:calc(-50% + var(--tx)) calc(-50% + var(--ty) * 1.4);scale:.5;opacity:1}to{translate:calc(-50% + var(--tx) * .6) calc(-50% + var(--ty) * 2.2);scale:.2;opacity:0}}@keyframes confetti-spin{to{rotate:720deg}}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f0f0f52;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;z-index:70;padding:24px;animation:fadeIn .18s ease-out}.modal{background:var(--bg);border-radius:16px;width:100%;max-width:480px;padding:24px;box-shadow:var(--shadow-pop);animation:modalIn .24s cubic-bezier(.2,.7,.2,1)}@keyframes modalIn{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal h3{margin:0 0 4px;font-size:18px;font-weight:600;letter-spacing:-.015em}.modal .field{margin-top:14px}.modal .field label{display:block;font-size:12px;font-weight:500;color:var(--text-2);margin-bottom:6px}.modal .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:22px}.date-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--r-md);background:var(--bg);border:1px solid var(--border);font-size:13px;color:var(--text);font-variant-numeric:tabular-nums}.date-chip .cal-icon{width:14px;height:14px;border:1.5px solid var(--text-2);border-radius:3px;position:relative}.date-chip .cal-icon:before{content:"";position:absolute;inset:4px 1px auto 1px;height:1.5px;background:var(--text-2)}.checkin-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:24px;align-items:start}@media (max-width: 820px){.checkin-grid{grid-template-columns:1fr}}.yh-row{display:flex;align-items:center;justify-content:space-between;padding:6px;cursor:pointer;border-radius:8px;transition:background var(--t-fast)}.yh-row:hover{background:var(--surface)}.yh-group-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin:4px 6px 6px}.yh-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 18px}.yh-grid>div+div{padding-left:18px;border-left:1px solid var(--border-soft)}.checkin-card{display:flex;flex-direction:column;gap:12px;transition:border-color var(--t),background var(--t)}.checkin-card.is-complete{background:var(--surface);border-color:var(--border-soft)}.checkin-card.is-complete textarea.input{opacity:.85}.priority-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:8px;transition:background var(--t-fast)}.priority-row:hover{background:var(--surface)}.priority-row .priority-remove{opacity:0;width:22px;height:22px;border-radius:6px;color:var(--text-3);display:grid;place-items:center;transition:opacity var(--t-fast),background var(--t-fast),color var(--t-fast)}.priority-row:hover .priority-remove{opacity:1}.priority-row .priority-remove:hover{background:var(--bg);color:var(--text)}.priority-add{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px dashed var(--border);border-radius:var(--r-md);background:var(--bg);transition:border-color var(--t),background var(--t)}.priority-add:focus-within{border-color:var(--text);border-style:solid}.priority-add>svg{color:var(--text-3);flex-shrink:0}.priority-add input{flex:1;border:none;outline:none;background:transparent;font-size:14px}.priority-acc{display:flex;align-items:center;gap:4px;border-left:1px solid var(--border-soft);padding-left:8px}.acc-swatch{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;transition:background var(--t-fast);opacity:.6}.acc-swatch:hover{background:var(--surface);opacity:1}.acc-swatch.is-on{opacity:1;background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--text)}.section-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:12px;border-top:1px solid var(--border-soft);margin-top:4px}.section-mark{font-size:13px;padding:7px 14px}.section-done{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--success)}.checkin-status{margin-top:28px;display:flex;align-items:center;gap:16px;padding:16px 20px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.phone-stage{display:grid;place-items:start center;padding:28px 0 64px}.phone{width:390px;background:#fff;border-radius:44px;border:10px solid #0F0F11;box-shadow:0 24px 60px #0f0f0f2e,0 4px 12px #0f0f0f0f;padding:20px 18px 28px;position:relative;min-height:780px}.phone:before{content:"";position:absolute;top:8px;left:50%;transform:translate(-50%);width:100px;height:26px;background:#0f0f11;border-radius:0 0 16px 16px}.phone-status{display:flex;justify-content:space-between;align-items:center;padding:6px 14px 18px;font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}.phone-status .signal{display:inline-flex;gap:3px;align-items:flex-end}.phone-status .signal i{display:block;width:3px;background:#0f0f11;border-radius:1px}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--border-soft)}.setting-row:last-child{border-bottom:none}.setting-row .sr-label{font-size:14px;font-weight:500}.setting-row .sr-sub{font-size:12.5px;color:var(--text-2);margin-top:2px}.switch{width:36px;height:22px;background:var(--surface-2);border-radius:999px;position:relative;transition:background var(--t);cursor:pointer;border:1px solid var(--border)}.switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0000002e;transition:transform var(--t)}.switch.on{background:var(--text);border-color:var(--text)}.switch.on:after{transform:translate(14px)}.hint{font-size:12.5px;color:var(--text-3);display:inline-flex;align-items:center;gap:6px}.gap-2{gap:8px}.birthday-banner{display:flex;align-items:center;gap:10px;padding:10px 16px;background:#fffbeb;border:1px solid #FDE68A;border-radius:var(--r-md);font-size:13px;margin-bottom:18px}.contact-list{display:flex;flex-direction:column;gap:6px}.contact-list--grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;align-items:start}@media (max-width: 900px){.contact-list--grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.contact-list--grid{grid-template-columns:1fr}}.contact-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);transition:border-color var(--t-fast)}.contact-card:hover{border-color:#d4d4d8}.contact-card--compact{overflow:visible}.contact-row{display:flex;align-items:center;gap:14px;padding:14px 18px}.contact-kebab{background:none;border:none;cursor:pointer;padding:4px 6px;border-radius:5px;color:var(--text-3);display:flex;align-items:center}.contact-kebab:hover{background:var(--hover);color:var(--text-1)}.kebab-dropdown{position:absolute;top:calc(100% + 4px);right:0;background:var(--surface);border:1.5px solid var(--border);border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:200;min-width:130px;padding:4px}.kebab-dropdown button{display:block;width:100%;text-align:left;padding:7px 10px;background:none;border:none;cursor:pointer;font-size:13px;border-radius:5px;color:var(--text-1)}.kebab-dropdown button:hover{background:var(--hover)}.contact-notes-inline{padding:0 18px 14px 68px;display:flex;flex-direction:column;gap:8px}.card-note{background:var(--surface);border-radius:8px;padding:10px 12px;font-size:13px}.card-note-body{margin-bottom:5px}.card-note-text{color:var(--text-1);line-height:1.5}.read-more-btn{background:none;border:none;cursor:pointer;color:var(--accent);font-size:12px;padding:0 4px;margin-left:4px}.read-more-btn:hover{text-decoration:underline}.card-note-meta{display:flex;align-items:center;justify-content:space-between}.card-note-time{font-size:11px;color:var(--text-3)}.card-note-del{background:none;border:none;cursor:pointer;color:var(--text-3);padding:2px;display:flex;align-items:center;border-radius:4px}.card-note-del:hover{color:var(--error);background:var(--hover)}.card-note-add-row{display:flex;gap:7px;align-items:center}.contact-avatar{width:36px;height:36px;border-radius:50%;background:var(--surface-2);color:var(--text-2);display:grid;place-items:center;font-size:12px;font-weight:600;flex-shrink:0;letter-spacing:0}.contact-info{flex:1;min-width:0}.contact-name{font-size:14.5px;font-weight:500}.contact-meta{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-2);margin-top:3px}.contact-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.contact-tag{font-size:11px;font-weight:500;padding:1px 7px;background:var(--surface-2);border-radius:var(--r-pill);color:var(--text-2)}.contact-note-bubble{flex:0 1 280px;min-width:0;padding:8px 14px;background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--r-lg);margin:0 12px}.contact-note-bubble .cnb-text{font-size:12.5px;color:var(--text-2);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tag-filter{display:inline-flex;align-items:center;padding:3px 10px;border-radius:var(--r-pill);font-size:12px;font-weight:500;color:var(--text-2);background:var(--bg);border:1px solid var(--border);transition:all var(--t-fast);cursor:pointer}.tag-filter:hover{color:var(--text);background:var(--surface)}.tag-filter.is-active{background:var(--text);color:#fff;border-color:var(--text)}.contact-groups-inline{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.contact-group-tag{display:inline-flex;align-items:center;gap:3px;background:var(--surface);border:1px solid var(--border-soft);padding:1px 6px 1px 8px;border-radius:var(--r-pill);font-size:11.5px;font-weight:500}.group-tag-remove{background:none;border:none;cursor:pointer;padding:0 1px;color:var(--text-3);font-size:13px;line-height:1;display:flex;align-items:center}.group-tag-remove:hover{color:var(--error)}.add-group-btn{background:none;border:1.5px dashed var(--border);border-radius:4px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;color:var(--text-3);padding:0}.add-group-btn:hover{border-color:var(--accent);color:var(--accent)}.group-picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;background:var(--surface);border:1.5px solid var(--border);border-radius:8px;box-shadow:0 4px 16px #0000001a;z-index:200;min-width:140px;padding:4px}.group-picker-dropdown button{display:flex;align-items:center;width:100%;padding:7px 10px;background:none;border:none;cursor:pointer;font-size:13px;color:var(--text-1);border-radius:5px;text-align:left}.group-picker-dropdown button:hover{background:var(--hover)}.contact-gift-inline{margin-top:5px}.input--xs{padding:3px 8px;font-size:12px;height:26px;min-width:0}.inline-edit-trigger{background:none;border:none;cursor:pointer;padding:2px 5px;border-radius:4px;font-size:12px;color:var(--text-2);text-align:left;display:inline-flex;align-items:center;gap:2px}.inline-edit-trigger:hover{background:var(--hover)}.contact-stats{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;min-width:120px}.contact-bday{font-size:12px;color:var(--text-2)}.contact-bday.is-soon{color:var(--warning);font-weight:600}.contact-lastseen{font-size:11.5px;color:var(--text-2)}.group-checkboxes{display:flex;flex-wrap:wrap;gap:8px}.group-checkbox-label{display:flex;align-items:center;gap:5px;padding:5px 11px;border:1.5px solid var(--border);border-radius:6px;cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none;transition:border-color .12s,background .12s}.group-checkbox-label.is-checked{border-color:var(--accent);background:#6c63ff0f}.group-checkbox-label input{display:none}.contact-detail{padding:0 18px 18px;border-top:1px solid var(--border-soft)}.cd-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;padding:14px 0}.cd-field{display:flex;flex-direction:column;gap:2px}.cd-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-3)}.cd-value{font-size:13.5px;color:var(--text)}.cd-edit{padding:14px 0}.cd-edit .field{margin-bottom:10px}.cd-edit .field label{display:block;font-size:12px;font-weight:500;color:var(--text-2);margin-bottom:4px}.cd-notes{margin-top:14px;padding-top:14px;border-top:1px solid var(--border-soft)}.cd-notes-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.cd-note-add{display:flex;gap:8px;margin-bottom:12px}.cd-note-add .input{flex:1;padding:8px 12px;font-size:13px}.cd-note-list{display:flex;flex-direction:column;gap:6px}.cd-note{padding:10px 12px;background:var(--surface);border-radius:var(--r-md);border:1px solid var(--border-soft)}.cd-note-text{font-size:13.5px;line-height:1.5;color:var(--text)}.cd-note-footer{display:flex;align-items:center;justify-content:space-between;margin-top:6px}.cd-note-time{font-size:11.5px;color:var(--text-3);font-variant-numeric:tabular-nums}.cd-note-del{width:20px;height:20px;border-radius:4px;color:var(--text-3);display:grid;place-items:center;opacity:0;transition:opacity var(--t-fast),background var(--t-fast)}.cd-note:hover .cd-note-del{opacity:1}.cd-note-del:hover{background:var(--bg);color:var(--error)}.contact-section{padding:0 18px 10px 68px}.contact-section-label{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin-bottom:4px}.linked-contact-pill{display:inline-flex;align-items:center;gap:5px;background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--r-pill);padding:2px 6px 2px 4px;font-size:12px;color:var(--text)}.linked-avatar{width:18px;height:18px;border-radius:50%;background:var(--border);display:grid;place-items:center;font-size:8px;font-weight:700;color:var(--text-2);flex-shrink:0}.linked-name{font-weight:500}.linked-rel{color:var(--text-3);font-size:11px}.link-picker-inline{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:12px;margin-top:8px}.link-group{margin-top:8px}.link-group-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3);margin-bottom:5px}.link-new-group-btn{background:none;border:1.5px dashed var(--border);border-radius:var(--r-md);padding:4px 10px;font-size:12px;color:var(--text-3);cursor:pointer;margin-top:8px;transition:border-color var(--t-fast),color var(--t-fast)}.link-new-group-btn:hover{border-color:var(--accent);color:var(--accent)}.network-grid{display:flex;flex-wrap:wrap;gap:16px}.network-member{min-width:140px;flex:1 1 140px;max-width:220px}.network-link-line{display:flex;align-items:center;gap:5px;font-size:12px;padding:1px 0 1px 2px}.network-rel{color:var(--text-3);font-size:11px;white-space:nowrap}.network-target{color:var(--text-2);font-weight:500}.group-row{display:flex;align-items:center;gap:8px}.group-icon-input{padding:7px 4px;border:1px solid var(--border);border-radius:var(--r-md);font-size:16px;background:var(--bg);text-align:center;outline:none;transition:border-color var(--t)}.group-icon-input:focus{border-color:var(--text)}.gap-3{gap:12px}.gap-4{gap:16px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-6{margin-top:24px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.flex{display:flex}.flex-1{flex:1}.between{justify-content:space-between}.center{align-items:center}.w-full{width:100%}.text-right{text-align:right}.drag-handle{display:flex;align-items:center;justify-content:center;width:22px;height:22px;color:var(--text-3);cursor:grab;border-radius:4px;transition:color var(--t-fast);flex-shrink:0}.drag-handle--h{width:auto;height:14px;padding:0 2px}.drag-handle:hover{color:var(--text-2);background:var(--surface)}.drag-handle:active{cursor:grabbing}.dragging-row{opacity:.35}.drag-over-row{outline:2px solid var(--accent);outline-offset:-2px;border-radius:6px}.drag-over-col{outline:2px solid var(--accent);outline-offset:-2px}.toast{position:fixed;bottom:28px;right:24px;background:var(--text);color:var(--bg);padding:8px 14px;border-radius:20px;font-size:13px;font-weight:500;z-index:9000;display:flex;align-items:center;gap:6px;box-shadow:0 4px 16px #0000002e;animation:toast-in .18s ease;pointer-events:none}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.mob-tabs,.mob-add-footer{display:none}.mob-tabs{background:var(--bg);border-bottom:1px solid var(--border);padding:0 16px;gap:0;flex-shrink:0}.mob-tab{display:flex;align-items:center;gap:5px;padding:10px 14px 9px;background:none;border:none;border-bottom:2px solid transparent;font-size:13.5px;font-weight:500;color:var(--text-2);cursor:pointer;transition:color var(--t-fast),border-color var(--t-fast);margin-bottom:-1px}.mob-tab:hover{color:var(--text)}.mob-tab.is-active{color:var(--accent);border-bottom-color:var(--accent)}.mob-tab-count{background:#6c63ff1f;color:var(--accent);font-size:11px;font-weight:600;padding:1px 5px;border-radius:99px;min-width:18px;text-align:center}.mob-add-footer{position:fixed;bottom:0;left:0;right:0;background:var(--bg);border-top:1px solid var(--border);padding:10px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));z-index:20}.mob-add-row{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:5px 5px 5px 14px;width:100%;transition:border-color var(--t-fast)}.mob-add-row:focus-within{border-color:var(--accent)}.mob-add-input{flex:1;background:none;border:none;outline:none;font-size:14px;color:var(--text);font-family:var(--font)}.mob-add-input::placeholder{color:var(--text-3)}.mob-add-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;background:var(--accent);border:none;border-radius:var(--r-md);color:#fff;cursor:pointer;flex-shrink:0;transition:opacity var(--t-fast)}.mob-add-btn:disabled{opacity:.35;cursor:default}.mob-add-btn:not(:disabled):hover{opacity:.85}.mob-add-btn svg{width:16px;height:16px}@media (max-width: 640px){.topbar{z-index:200}.topbar-inner{padding:10px 16px;gap:10px}.nav{display:none!important}.nav-divider,.hint{display:none}.mobile-nav{display:block}.mobile-nav-btn{display:flex;align-items:center;gap:5px;padding:8px 12px;background:var(--surface-2);border-radius:var(--r-md);font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;transition:background var(--t-fast),color var(--t-fast)}.mobile-nav-btn.is-open{background:#1a1a1a;color:#fff}.mobile-nav-menu{position:absolute;top:calc(100% + 6px);left:0;min-width:210px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-pop);padding:4px;z-index:40}.mobile-nav-item{display:block;width:100%;text-align:left;padding:11px 14px;font-size:15px;font-weight:500;color:var(--text);border-radius:var(--r-md);transition:background var(--t-fast)}.mobile-nav-item:hover,.mobile-nav-item:active{background:var(--surface)}.mobile-nav-item.is-active{background:#1a1a1a;color:#fff;font-weight:600}.page:not(.page--narrow){padding:20px 16px 80px}.checkin-grid{grid-template-columns:1fr}h1.page-title{font-size:22px}.card{padding:16px}.todo-header,.todo-week-section{display:none}.page--narrow .todo-add{display:none!important}.due-bubbles{display:none}.mob-tabs,.mob-add-footer{display:flex}.page--narrow{padding:0 0 72px;max-width:100%}.page--narrow .todo-list{gap:0;padding:0}.page--narrow .todo{border:none;border-bottom:1px solid var(--border);border-radius:0;box-shadow:none;padding:11px 16px;gap:10px}.page--narrow .todo:last-child{border-bottom:none}.page--narrow .todo-actions{opacity:1}}
