.app-shell{min-height:100vh;display:grid}.app-main{grid-area:main;min-width:0}.app-nav{display:flex;background:var(--color-bg-soft)}.app-nav-brand{display:flex;align-items:center;gap:10px;padding:4px 10px;margin-bottom:28px;color:var(--color-text)}.app-nav-brand svg{color:var(--color-accent)}.app-nav-title{font-size:15px;font-weight:650}.app-nav-tabs{display:flex;flex:1}.app-nav-footer{display:flex}.app-nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-sm);color:var(--color-sub);font-size:14px;font-weight:450;border:none;background:none;transition:background var(--dur) var(--ease),color var(--dur) var(--ease);min-height:36px;width:100%;position:relative}.app-nav-item:hover{background:var(--color-accent-soft);color:var(--color-text)}.app-nav-item:active{transform:scale(.98)}.app-nav-item.active{background:#eaeae8;color:var(--color-text);font-weight:600}.app-nav-logout{opacity:.7}@media(min-width:768px){.app-shell{grid-template-columns:var(--nav-w-desktop) 1fr;grid-template-areas:"nav main"}.app-nav{grid-area:nav;flex-direction:column;border-right:1px solid var(--color-border);padding:20px 14px;position:sticky;top:0;height:100vh}.app-nav-tabs{flex-direction:column;gap:2px}.app-nav-footer{flex-direction:column;gap:2px;margin-top:auto}.app-nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;border-radius:2px;background:var(--color-faint)}.app-main{max-width:960px;margin:0 auto;padding:48px 48px 64px;width:100%}.app-main.app-main-calendar{max-width:1296px}}@media(max-width:767px){.app-shell{grid-template-rows:1fr auto;grid-template-areas:"main" "nav"}.app-nav{grid-area:nav;position:sticky;bottom:0;flex-direction:row;background:#f7f7f5f5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--color-border);padding:4px 8px;padding-bottom:calc(4px + env(safe-area-inset-bottom));z-index:100}.app-nav-brand{display:none}.app-nav-tabs{flex-direction:row;flex:1}.app-nav-item{flex:1;flex-basis:0;flex-direction:column;gap:2px;padding:6px 4px;font-size:11px;min-height:0;width:auto;min-width:0;justify-content:center;border-radius:var(--radius-sm)}.app-nav-item.active:before{content:none}.app-nav-footer{display:none}.app-main{padding:24px 16px 32px}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--color-bg-soft)}.login-card{width:100%;max-width:360px;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius);padding:40px 32px;box-shadow:var(--shadow-lg);text-align:center}.login-logo{color:var(--color-accent);margin-bottom:12px}.login-title{font-size:22px;font-weight:700;letter-spacing:-.02em}.login-subtitle{font-size:13px;color:var(--color-sub);margin-bottom:28px}.login-field{position:relative;margin-bottom:16px}.login-remember{display:flex;align-items:center;gap:8px;margin:-4px 0 16px;color:var(--color-sub);font-size:13px;text-align:left;cursor:pointer}.login-remember input{width:16px;height:16px;accent-color:var(--color-accent)}.login-field-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--color-faint)}.login-field input{width:100%;padding:11px 14px 11px 40px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--fs-input);background:var(--color-card);color:var(--color-text);outline:none;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.login-field input:focus{border-color:var(--color-border-strong);box-shadow:0 0 0 3px var(--color-accent-soft)}.login-field input:focus{border-color:var(--color-accent)}.login-error{font-size:13px;color:var(--color-danger);margin-bottom:12px}.login-submit{width:100%;padding:11px;background:var(--color-accent);color:#fff;border:none;border-radius:var(--radius-sm);font-size:15px;font-weight:600;min-height:44px;display:inline-flex;align-items:center;justify-content:center;transition:background var(--dur) var(--ease),transform .05s}.login-submit:hover:not(:disabled){background:var(--color-accent-strong)}.login-submit:active:not(:disabled){transform:translateY(1px)}.login-submit:disabled{opacity:.6;cursor:not-allowed}.auth-guard-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--color-sub)}.placeholder-page{padding:40px 0;text-align:center;color:var(--color-sub)}.placeholder-page h2{color:var(--color-text);margin-bottom:8px}.card{background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px;box-shadow:none;margin-bottom:16px;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.card:hover{border-color:var(--color-border-strong)}.icon-btn{transition:background var(--dur) var(--ease),color var(--dur) var(--ease),transform .05s}.icon-btn:active{transform:scale(.94)}.btn{padding:7px 13px;border-radius:var(--radius-sm);font-size:14px;font-weight:500;border:1px solid transparent;cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform .05s;min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:6px;line-height:1.2}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--color-accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-accent-strong)}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-ghost{background:var(--color-card);color:var(--color-text);border-color:var(--color-border)}.btn-ghost:hover:not(:disabled){background:var(--color-accent-soft)}.btn-ghost:active:not(:disabled){transform:translateY(1px)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#bd403b}.btn-danger:active:not(:disabled){transform:translateY(1px)}.spinner{width:22px;height:22px;border:2px solid var(--color-border);border-top-color:var(--color-faint);border-radius:50%;animation:spin .8s linear infinite;margin:32px auto}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:40px 16px;color:var(--color-sub)}.empty-state-icon{color:var(--color-faint);margin-bottom:12px;display:flex;justify-content:center}.empty-state-title{font-size:14px;font-weight:500;color:var(--color-sub)}.empty-state-hint{font-size:12px;color:var(--color-faint);margin-top:4px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f0f0f3d;z-index:300;display:flex;align-items:flex-start;justify-content:center;padding:10vh 20px 20px;overflow-y:auto;animation:fade-in var(--dur) var(--ease)}.modal{background:var(--color-card);border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:var(--shadow-pop);width:100%;max-width:480px;max-height:80vh;overflow-y:auto;animation:pop-in .2s var(--ease);outline:none}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 14px;border-bottom:1px solid var(--color-border)}.modal-header h3{font-size:15px;font-weight:600}.modal-close{border:none;background:none;color:var(--color-sub);padding:6px;border-radius:var(--radius-sm);display:flex;cursor:pointer;transition:background var(--dur) var(--ease)}.modal-close:hover{background:var(--color-accent-soft);color:var(--color-text)}.modal-body{padding:18px 20px 20px}.confirm-message{font-size:14px;color:var(--color-sub);margin-bottom:16px;line-height:1.6}.confirm-actions{display:flex;gap:10px;justify-content:flex-end}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}input,select,textarea{font-family:inherit;font-size:var(--fs-input);color:var(--color-text);width:100%;padding:8px 12px;border:1px solid #d9d8d4;border-radius:var(--radius-sm);background:var(--color-card);outline:none;line-height:1.5;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease)}input::placeholder,textarea::placeholder{color:var(--color-faint)}input:focus,select:focus,textarea:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #2383e229;background:var(--color-card)}textarea{resize:vertical;min-height:80px}select{-moz-appearance:auto;appearance:auto;-webkit-appearance:auto;cursor:pointer}.select-control{position:relative;display:flex;width:100%;min-width:0;align-items:center}.select-control select{min-height:36px;padding:7px 32px 7px 34px;border-color:var(--color-border);border-radius:var(--radius);-moz-appearance:none;appearance:none;-webkit-appearance:none}.select-control:not(.has-icon) select{padding-left:12px}.select-control-icon,.select-control-chevron{position:absolute;z-index:1;color:var(--color-faint);pointer-events:none}.select-control-icon{left:11px;display:inline-flex}.select-control-chevron{right:11px}.select-control:hover select{border-color:var(--color-border-strong)}.select-control:focus-within select{border-color:var(--color-border-strong);box-shadow:0 0 0 3px var(--color-accent-soft)}input:disabled,select:disabled,textarea:disabled{opacity:.5;cursor:not-allowed;background:var(--color-bg-soft)}.minical{position:relative;display:inline-flex}.minical-trigger{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-card);color:var(--color-text);font-size:var(--fs-input);line-height:1.5;cursor:pointer;min-height:34px;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease)}.minical-trigger:hover{border-color:var(--color-border-strong)}.minical-trigger:focus-visible{outline:none;border-color:var(--color-border-strong);box-shadow:0 0 0 3px var(--color-accent-soft)}.minical-trigger svg{color:var(--color-faint);flex-shrink:0}.minical-trigger-text{min-width:96px;text-align:left}.minical-trigger-chevron{margin-left:2px;transition:transform var(--dur) var(--ease)}.minical-pop{position:fixed;z-index:600;width:280px;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-pop);padding:12px;animation:pop-in .16s var(--ease)}.minical-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.minical-nav-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;border-radius:var(--radius-sm);color:var(--color-sub);cursor:pointer;transition:background var(--dur) var(--ease),transform .05s}.minical-nav-btn:hover{background:var(--color-accent-soft);color:var(--color-text)}.minical-nav-btn:active{transform:scale(.92)}.minical-label{font-size:13px;font-weight:600;color:var(--color-text)}.minical-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:4px}.minical-weekday{text-align:center;font-size:11px;color:var(--color-faint);padding:4px 0}.minical-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.minical-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border:none;background:none;border-radius:var(--radius-sm);font-size:13px;color:var(--color-text);cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),transform .05s}.minical-cell:hover{background:var(--color-accent-soft)}.minical-cell:active{transform:scale(.92)}.minical-cell.today{font-weight:700;color:var(--color-accent)}.minical-cell.selected{background:var(--color-accent);color:#fff;font-weight:600}.minical-cell.future:not(.selected){color:var(--color-text);background:#fbfbfa}.minical-cell.disabled,.minical-cell.future.disabled:not(.selected){background:transparent;color:var(--color-border-strong);cursor:not-allowed}.minical-cell.disabled:hover,.minical-cell.future.disabled:hover:not(.selected){background:transparent}.minical-blank{pointer-events:none}.minical-footer{display:flex;align-items:center;gap:8px;justify-content:flex-end;margin-top:6px;padding-top:8px;border-top:1px solid var(--color-border)}.minical-clear,.minical-today{border:none;background:none;color:var(--color-link);font-size:var(--fs-sub);font-weight:500;padding:4px 8px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur) var(--ease)}.minical-clear{margin-right:auto;color:var(--color-sub)}.minical-clear:hover,.minical-today:hover:not(:disabled){background:var(--color-accent-soft)}.minical-today:disabled{color:var(--color-border-strong);cursor:not-allowed}.notion-tag{--tag-base: #787774;display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:100%;min-height:24px;padding:2px 7px;border:1px solid transparent;border-radius:4px;background:color-mix(in srgb,var(--tag-base) 18%,white);color:color-mix(in srgb,var(--tag-base) 58%,#252525);font:inherit;font-size:12px;font-weight:500;line-height:1.35;letter-spacing:0;vertical-align:middle}button.notion-tag{cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}button.notion-tag:hover:not(:disabled){background:color-mix(in srgb,var(--tag-base) 25%,white)}.notion-tag.is-selected{border-color:color-mix(in srgb,var(--tag-base) 44%,white);background:color-mix(in srgb,var(--tag-base) 27%,white)}.notion-tag.is-disabled{opacity:.5}.notion-tag.is-compact{min-height:21px;padding:1px 6px;font-size:11px}.notion-tag-label{max-width:min(180px,48vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notion-tag-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:-3px;padding:0;border:0;border-radius:3px;background:transparent;color:currentColor;cursor:pointer}.notion-tag-remove:hover{background:#0f0f0f14}.notion-tag:focus-visible,.notion-tag-remove:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.today-page{max-width:760px}.today-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:28px}.today-title{font-size:var(--fs-title);font-weight:700;letter-spacing:-.01em}.today-date{font-size:13px;color:var(--color-sub)}.today-progress{display:flex;align-items:center;gap:10px}.progress-ring{position:relative;flex-shrink:0}.progress-ring svg{display:block}.progress-ring-num{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}.today-progress-label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--color-sub);line-height:1.3}.today-progress-focus{font-size:11px;color:var(--color-faint)}.section-header{display:flex;align-items:center;gap:8px;font-size:var(--fs-card-title);font-weight:600;margin-bottom:12px;color:var(--color-text)}.section-header-actions{display:flex;align-items:center;gap:2px;margin-left:auto}.section-header-actions .icon-btn{margin-left:0}.completed-toggle{margin-left:auto;min-height:32px;padding:4px 8px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--color-link);font-size:12px;cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.completed-toggle:hover{border-color:#3b82f640;background:#3b82f614}.completed-toggle:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.icon-btn{margin-left:auto;border:none;background:none;color:var(--color-sub);padding:6px;border-radius:8px;display:flex;cursor:pointer}.icon-btn:hover{background:var(--color-accent-soft);color:var(--color-text)}.task-list{display:flex;flex-direction:column;gap:8px}@keyframes row-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.task-row{--task-card-color: #787774;display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-soft);box-shadow:var(--shadow);cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease);animation:row-fade-in .15s var(--ease)}.task-row.has-task-color{border-color:color-mix(in srgb,var(--task-card-color) 22%,var(--color-card));background:color-mix(in srgb,var(--task-card-color) 9%,var(--color-card))}.task-row:hover{background:#f1f0ee;border-color:var(--color-border-strong)}.task-row.has-task-color:hover{border-color:color-mix(in srgb,var(--task-card-color) 32%,var(--color-card));background:color-mix(in srgb,var(--task-card-color) 13%,var(--color-card))}.task-row.done{border-color:var(--color-border);background:#fafaf9}.task-row.done.has-task-color{border-color:color-mix(in srgb,var(--task-card-color) 14%,var(--color-card));background:color-mix(in srgb,var(--task-card-color) 5%,var(--color-card))}.task-row.done:hover{background:#f5f5f3}.task-row.done.has-task-color:hover{border-color:color-mix(in srgb,var(--task-card-color) 24%,var(--color-card));background:color-mix(in srgb,var(--task-card-color) 8%,var(--color-card))}.task-row:focus-within{border-color:var(--color-border-strong);box-shadow:0 0 0 2px var(--color-accent-soft)}.task-row.has-task-color:focus-within{border-color:color-mix(in srgb,var(--task-card-color) 40%,var(--color-card));box-shadow:0 0 0 2px color-mix(in srgb,var(--task-card-color) 18%,transparent)}.task-row.done .task-row-title{text-decoration:line-through;color:var(--color-faint)}.task-row-check{flex-shrink:0;display:flex;color:var(--color-faint)}.task-row-body{flex:1;min-width:0}.task-row-title{font-size:14px;font-weight:550;font-weight:500}.recurrence-badge{display:inline-flex;align-items:center;gap:3px;margin-left:7px;padding:1px 5px;border-radius:4px;background:var(--color-accent-soft);color:var(--color-link);font-size:10px;font-weight:600;line-height:1.6;vertical-align:middle}.recurrence-editor{padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-soft);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.recurrence-editor.is-active{border-color:color-mix(in srgb,var(--color-link) 34%,var(--color-border));background:color-mix(in srgb,var(--color-link) 5%,var(--color-card))}.recurrence-editor-head{display:flex;align-items:center;gap:7px;margin-bottom:10px;color:var(--color-text);font-size:13px;font-weight:600}.recurrence-editor-head small{margin-left:auto;padding:2px 6px;border-radius:4px;background:var(--color-card);color:var(--color-faint);font-size:10px;font-weight:500}.recurrence-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.recurrence-fields small,.recurrence-editor-hint{color:var(--color-faint);font-size:11px}.recurrence-editor-hint{margin-top:8px}.scope-dialog-copy{color:var(--color-sub);font-size:14px;line-height:1.6}.scope-dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.task-row-desc{font-size:12px;color:var(--color-faint);margin-top:2px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.task-row-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:var(--color-sub);margin-top:2px}.task-row-note{color:var(--color-faint)}.due-label{display:inline-flex;align-items:center;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:500;line-height:1.6}.due-overdue{color:var(--color-danger);background:var(--color-danger-soft)}.due-today{color:var(--color-link);background:var(--color-accent-soft)}.due-upcoming{color:var(--color-sub);background:var(--color-accent-soft)}.due-label.is-done{opacity:.6}.todo-groups{display:flex;flex-direction:column;gap:16px}.todo-group-title{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--color-sub);margin-bottom:4px;letter-spacing:.01em}.todo-group-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--color-accent-soft);color:var(--color-sub);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums}.todo-group-title.group-overdue span:first-child{color:var(--color-danger)}.todo-group-title.group-today span:first-child{color:var(--color-link)}.todo-section-config{display:flex;flex-direction:column;gap:16px}.todo-section-hint{margin:0;color:var(--color-sub);font-size:13px;line-height:1.55}.todo-section-order{display:flex;flex-direction:column;gap:5px;padding-top:4px}.todo-section-order-title{color:var(--color-sub);font-size:12px;font-weight:600}.todo-section-order-row{display:flex;align-items:center;justify-content:space-between;min-height:38px;padding:5px 6px;border:1px solid var(--color-border);border-radius:var(--radius-sm)}.todo-section-order-actions{display:flex;align-items:center;gap:2px}.todo-section-order-actions .icon-btn{width:28px;height:28px;margin-left:0;padding:0;justify-content:center}.task-row-actions{display:flex;align-items:center;gap:4px;opacity:0;transform:translate(4px);transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease)}.task-row:hover .task-row-actions,.task-row-actions:focus-within,.task-row-actions.active{opacity:1;transform:translate(0)}.task-row-actions .icon-btn{width:30px;height:30px;padding:0;margin:0;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-card);color:var(--color-sub);transition:background var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease),transform .05s}.task-row-actions .icon-btn:hover{border-color:var(--color-border-strong);color:var(--color-text);background:var(--color-accent-soft)}.task-row-actions .icon-btn:active{transform:scale(.9)}.task-row-actions .action-timer:hover{color:var(--color-link);border-color:var(--color-link);background:#3b82f614}.task-row-actions .action-edit:hover{color:var(--color-text);border-color:var(--color-border-strong);background:var(--color-accent-soft)}.task-row-actions .action-delete:hover{color:var(--color-danger);border-color:var(--color-danger);background:#e03e3e14}.task-row.done .task-row-actions .icon-btn{color:var(--color-faint);background:var(--color-card)}.task-row-cat{font-size:11px;color:#fff;padding:2px 8px;border-radius:999px;opacity:.85;flex-shrink:0}.task-proj{font-weight:500}.task-priority{color:var(--color-daily);flex-shrink:0}.timer-panel{background:var(--color-card);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius);padding:20px;transition:border-color .3s}.timer-panel.timer-paused{border-color:var(--color-border-strong);background:#fbfbfa}.timer-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.timer-kind{color:var(--color-sub);font-size:13px;font-weight:600}.timer-icon-btn{border:none;background:none;color:var(--color-sub);padding:6px;border-radius:var(--radius-sm);display:flex;cursor:pointer;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.timer-icon-btn:hover{background:var(--color-accent-soft);color:var(--color-text)}.timer-display{font-size:48px;font-weight:700;letter-spacing:.02em;text-align:center;font-variant-numeric:tabular-nums;line-height:1.1}.timer-phase{text-align:center;font-size:13px;color:var(--color-sub);margin-top:4px}.timer-pause-hint{margin-top:-8px;margin-bottom:12px;color:var(--color-faint);font-size:12px;text-align:center}.timer-linked{display:flex;align-items:center;flex-direction:column;gap:2px;margin:10px auto 0;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);text-align:center}.timer-linked span,.timer-linked small{color:var(--color-faint);font-size:11px}.timer-linked strong{overflow:hidden;max-width:100%;color:var(--color-text);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.timer-controls{display:flex;justify-content:center;gap:8px;margin-top:16px}.timer-btn{display:flex;align-items:center;gap:4px;border:1px solid var(--color-border);background:var(--color-card);color:var(--color-text);padding:8px 14px;border-radius:var(--radius-sm);font-size:var(--fs-sub);cursor:pointer;transition:background var(--dur) var(--ease),transform .05s;min-height:36px}.timer-btn:disabled{opacity:.45;cursor:not-allowed}.timer-btn:active{transform:translateY(1px)}.timer-btn:hover:not(:disabled){background:var(--color-accent-soft)}.timer-btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:#fff;font-weight:600;padding:8px 20px;border-radius:var(--radius-sm)}.timer-btn-primary:hover:not(:disabled){background:var(--color-accent-strong)}.link-list{max-height:300px;overflow-y:auto}.link-section{font-size:12px;color:var(--color-faint);font-weight:600;margin:12px 0 6px}.link-item{display:block;width:100%;text-align:left;padding:10px 12px;border:none;background:none;border-radius:var(--radius-sm);font-size:14px;cursor:pointer}.link-item:hover{background:var(--color-accent-soft)}.link-item.active{background:var(--color-accent-soft);font-weight:600}.link-empty{font-size:13px;color:var(--color-faint);padding:4px 12px}.config-fields{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.config-fields label,.task-editor label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--color-sub)}.config-actions,.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}.task-editor-modal{display:flex;overflow:hidden;max-width:640px;max-height:min(86vh,780px);flex-direction:column}.task-editor-modal .modal-header{flex:0 0 auto;padding:16px 24px 13px}.task-editor-modal .modal-body{overflow-y:auto;padding:0 24px;overscroll-behavior:contain}.task-editor{display:flex;flex-direction:column}.task-editor-content{padding:20px 0 18px;border-bottom:1px solid var(--color-border)}.task-editor-title{padding:0;border:0;border-radius:0;background:transparent;font-size:22px;font-weight:650;line-height:1.35}.task-editor-title:focus,.task-editor-description:focus{border-color:transparent;background:transparent;box-shadow:none}.task-editor-description{min-height:52px;margin-top:7px;padding:0;border:0;border-radius:0;background:transparent;color:var(--color-sub);font-size:13px;line-height:1.65;resize:none}.task-editor-section{padding:16px 0;border-bottom:1px solid var(--color-border)}.task-editor-section-heading{display:inline-flex;align-items:center;gap:7px;color:var(--color-sub);font-size:12px;font-weight:600}.task-editor-section-heading svg{color:var(--color-faint)}.task-editor-section-heading small{color:var(--color-faint);font-size:10px;font-weight:500}.task-editor-schedule{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:11px}.task-editor-schedule.is-create{grid-template-columns:minmax(0,1fr)}.task-editor-property{min-width:0;padding:10px;border-radius:var(--radius-sm);background:var(--color-bg-soft)}.task-editor .minical{display:flex;width:100%}.task-editor .minical-trigger{width:100%}.task-editor .minical-trigger-chevron{margin-left:auto}.task-editor-automation{display:flex;flex-direction:column;gap:10px}.task-editor-automation>.task-editor-section-heading{margin-bottom:1px}.tag-select{display:flex;flex-wrap:wrap;gap:8px}.tag-chip{display:flex;align-items:center;gap:6px;border:1px solid var(--color-border);background:none;padding:6px 12px;border-radius:999px;font-size:13px;cursor:pointer;transition:all .15s}.tag-chip.active{border-color:var(--color-accent);background:var(--color-accent-soft)}.tag-chip-child{font-size:12px;padding:5px 10px}.tag-dot{width:8px;height:8px;border-radius:50%}.tag-chip-mini{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:500}.task-row-wrap{border-radius:var(--radius-sm)}.task-row-wrap:hover{background:var(--color-accent-soft)}.task-editor-tags{display:flex;flex-direction:column;gap:10px}.task-editor-tags-header{display:flex;align-items:center;justify-content:space-between}.tag-add-btn{display:flex;align-items:center;gap:4px;min-height:28px;border:1px solid var(--color-border);background:var(--color-card);color:var(--color-sub);font-size:12px;padding:4px 10px;border-radius:var(--radius-sm);cursor:pointer}.tag-add-btn:hover{border-color:var(--color-accent);color:var(--color-text)}.quick-tag-create{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;background:var(--color-bg-soft);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:12px}.quick-tag-actions{display:flex;align-items:flex-end;gap:8px;justify-content:flex-end}.task-editor-actions{position:sticky;z-index:3;bottom:0;margin:0 -24px;padding:14px 24px 16px;border-top:1px solid var(--color-border);background:color-mix(in srgb,var(--color-card) 96%,transparent);box-shadow:0 -8px 18px #0f0f0f08;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.task-editor-actions .btn{min-width:94px}.quick-tag-actions .btn{padding:8px 12px;min-height:36px;font-size:13px}.reflection-card .section-header{margin-bottom:8px}.reflection-actions{display:flex;align-items:center;gap:9px;margin-left:auto}.reflection-status{display:inline-flex;align-items:center;gap:4px;color:var(--color-faint);font-size:11px;white-space:nowrap}.reflection-status.is-saved{color:var(--color-success)}.reflection-status.is-dirty{color:var(--color-sub)}.reflection-status.is-error{color:var(--color-danger)}.reflection-status.is-loading svg{animation:reflection-spin .8s linear infinite}.reflection-save{display:inline-flex;align-items:center;gap:5px;min-height:30px;border:1px solid transparent;background:var(--color-accent);color:#fff;font-size:12px;font-weight:600;padding:5px 9px;border-radius:var(--radius-sm);cursor:pointer;transition:background var(--dur) var(--ease),opacity var(--dur) var(--ease)}.reflection-save:hover:not(:disabled){background:var(--color-accent-strong)}.reflection-save:disabled{cursor:default;opacity:.5}.reflection-editor{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fbfbfa;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.reflection-editor:focus-within{border-color:var(--color-link);box-shadow:0 0 0 2px #2383e21f}.reflection-editor.has-error{border-color:var(--color-danger)}.reflection-editor.has-error:focus-within{box-shadow:0 0 0 2px #e03e3e1f}.reflection-textarea{width:100%;border:none;background:transparent;font-size:14px;color:var(--color-text);resize:vertical;outline:none;min-height:94px;padding:11px 12px 7px;line-height:1.7}.reflection-textarea::placeholder{color:var(--color-faint)}.reflection-footer{display:flex;justify-content:space-between;gap:12px;padding:0 12px 8px;color:var(--color-faint);font-size:11px}.reflection-message{color:var(--color-danger)}@keyframes reflection-spin{to{transform:rotate(360deg)}}@media(max-width:767px){.timer-display{font-size:40px}.icon-btn{width:44px;height:44px;padding:10px;justify-content:center;align-items:center}.task-row{padding:12px 8px}.task-row-actions{opacity:1;transform:none;gap:4px}.task-row-actions .icon-btn{width:36px;height:36px}.task-row-check{min-width:32px;display:flex;justify-content:center}.recurrence-fields{grid-template-columns:1fr}.task-editor-modal{max-height:calc(100vh - 24px)}.task-editor-modal .modal-header,.task-editor-modal .modal-body{padding-inline:18px}.task-editor-schedule,.quick-tag-create{grid-template-columns:1fr}.task-editor-actions{margin-inline:-18px;padding-inline:18px}.completed-toggle{min-height:40px;padding-inline:10px}}.task-detail{display:flex;flex-direction:column;gap:14px}.task-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.task-detail-title{font-size:18px;font-weight:600;line-height:1.4;word-break:break-word}.task-detail-status{flex-shrink:0;font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px}.task-detail-status.st-done{color:var(--color-success);background:#0aa06e1a}.task-detail-status.st-todo{color:var(--color-link);background:#3b82f61a}.task-detail-status.st-cancelled{color:var(--color-faint);background:var(--color-accent-soft)}.task-detail-desc{font-size:14px;color:var(--color-sub);white-space:pre-wrap;line-height:1.7;word-break:break-word;background:var(--color-bg-soft);border-radius:var(--radius-sm);padding:10px 12px}.task-detail-meta{display:flex;flex-direction:column;gap:10px;padding-top:4px}.task-detail-row{display:flex;align-items:flex-start;gap:8px;font-size:13px;color:var(--color-sub)}.task-detail-row>svg{color:var(--color-faint);flex-shrink:0;margin-top:2px}.task-detail-row-label{flex-shrink:0;color:var(--color-sub)}.task-detail-tags{display:flex;flex-wrap:wrap;gap:6px}.task-detail-focus{display:inline-flex;align-items:center;gap:6px;color:var(--color-text);font-weight:600;font-variant-numeric:tabular-nums}.task-detail-count{font-style:normal;font-weight:400;font-size:11px;color:var(--color-faint)}.focus-waterfall{border-top:1px solid var(--color-border);padding-top:14px}.focus-waterfall-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;color:var(--color-text);font-size:13px;font-weight:600}.focus-waterfall-head small,.focus-waterfall-empty{color:var(--color-faint);font-size:12px;font-weight:400}.focus-waterfall-empty{padding:12px 0 2px 20px}.focus-waterfall-list{display:flex;flex-direction:column;margin-top:8px}.focus-waterfall-item{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:start;gap:8px;width:100%;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--color-text);padding:8px 6px;text-align:left;font:inherit;cursor:pointer}.focus-waterfall-item:hover,.focus-waterfall-item:focus-visible{background:var(--color-bg-soft);outline:none}.focus-waterfall-axis{position:relative;display:block;width:18px;min-height:38px}.focus-waterfall-axis:before{position:absolute;top:11px;bottom:-17px;left:8px;width:1px;background:var(--color-border);content:""}.focus-waterfall-item:last-child .focus-waterfall-axis:before{display:none}.focus-waterfall-axis i{position:absolute;top:7px;left:4px;width:9px;height:9px;border:2px solid var(--color-card);border-radius:50%;background:var(--color-accent)}.focus-waterfall-copy,.focus-waterfall-time{display:flex;min-width:0;flex-direction:column;gap:2px}.focus-waterfall-time strong{font-size:12px;font-weight:600}.focus-waterfall-time span,.focus-waterfall-note{overflow:hidden;color:var(--color-sub);font-size:12px;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.focus-waterfall-duration{padding-top:2px;color:var(--color-text);font-size:12px;font-variant-numeric:tabular-nums;font-weight:600}.time-record-editor{display:flex;flex-direction:column;gap:12px}.time-record-editor label{display:flex;flex-direction:column;gap:6px;color:var(--color-sub);font-size:13px}.memory-badge{display:inline-flex;align-items:center;margin-left:6px;padding:0 6px;border-radius:999px;font-size:10px;font-weight:600;line-height:1.6;vertical-align:1px}.memory-badge-main{color:#8b5cf6;background:#8b5cf61f}.memory-badge-review{color:var(--color-link);background:#3b82f61f}.memory-area{border-radius:var(--radius-sm)}.memory-switch-row{display:flex;align-items:center;width:100%;gap:10px;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-soft);color:var(--color-text);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.memory-switch-row:hover{border-color:#a7a7a2;background:#f7f7f5}.memory-switch-row:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.memory-area.is-active .memory-switch-row{border-color:#8bbd98;background:#f0f8f1}.memory-switch-icon,.memory-switch-state{display:grid;flex:0 0 auto;place-items:center}.memory-switch-icon{width:32px;height:32px;border-radius:6px;color:#4c7d58;background:#dcefe0}.memory-switch-copy{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px}.memory-switch-copy strong{font-size:13px;font-weight:600}.memory-switch-copy small{color:var(--color-sub);font-size:11px}.memory-switch-state{width:20px;height:20px;border:1px solid #b7b7b2;border-radius:50%;color:#fff}.memory-area.is-active .memory-switch-state{border-color:#4c7d58;background:#4c7d58}.memory-config{display:flex;flex-direction:column;gap:10px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--color-border)}.task-editor-date>span{display:inline-flex;align-items:center;gap:6px}.task-editor-date em{color:var(--color-danger);font-size:11px;font-style:normal;font-weight:600}.task-editor-status{display:flex;flex-direction:column;gap:6px;color:var(--color-sub);font-size:13px}.task-status-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:3px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-soft)}.task-status-options button{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:0;min-height:32px;padding:5px 7px;border:1px solid transparent;border-radius:4px;background:transparent;color:var(--color-sub);font:inherit;font-size:12px;cursor:pointer;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease)}.task-status-options button:hover{background:var(--color-card);color:var(--color-text)}.task-status-options button.is-active{border-color:var(--color-border);background:var(--color-card);box-shadow:0 1px 2px #0f0f0f0f}.task-status-options button.status-todo.is-active{color:var(--color-link)}.task-status-options button.status-done.is-active{color:var(--color-success)}.memory-preview{display:flex;flex-wrap:wrap;gap:6px}.memory-preview-title{width:100%;font-size:11px;color:var(--color-faint);margin-bottom:2px}.memory-preview-item{display:inline-flex;padding:2px 8px;border-radius:999px;background:#8b5cf61a;color:#8b5cf6;font-size:11px;font-weight:500}.memory-error{font-size:12px;color:var(--color-danger)}.memory-readonly{display:flex;align-items:center;padding:10px 12px;border:1px solid var(--color-border);background:var(--color-bg-soft)}.memory-readonly-text{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--color-sub)}.memory-progress{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:12px;background:var(--color-bg-soft)}.memory-progress-head{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600;color:var(--color-text);margin-bottom:8px}.memory-progress-count{font-size:12px;color:var(--color-sub);font-weight:500;font-variant-numeric:tabular-nums}.memory-progress-bar{height:6px;border-radius:999px;background:var(--color-accent-soft);overflow:hidden;margin-bottom:12px}.memory-progress-fill{height:100%;border-radius:999px;background:#8b5cf6;transition:width .4s var(--ease)}.memory-timeline{display:flex;flex-direction:column;gap:6px}.memory-timeline-row{display:flex;align-items:center;gap:10px;font-size:13px}.memory-timeline-round{flex-shrink:0;min-width:56px;font-weight:600;color:var(--color-text)}.memory-timeline-date{flex:1;color:var(--color-sub);font-variant-numeric:tabular-nums}.memory-timeline-state{flex-shrink:0;font-size:12px}.memory-timeline-row.st-done .memory-timeline-state{color:var(--color-success)}.memory-timeline-row.st-overdue .memory-timeline-state{color:var(--color-danger)}.memory-timeline-row.st-todo .memory-timeline-state{color:var(--color-faint)}.memory-next{margin-top:10px;padding-top:10px;border-top:1px dashed var(--color-border);font-size:12px;color:#8b5cf6;font-weight:500}.calendar-page{width:100%;max-width:1200px;container-name:calendar-page;container-type:inline-size}.calendar-header{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:20px}.calendar-heading{display:flex;align-items:baseline;gap:10px}.calendar-title{margin:0;font-size:var(--fs-title);font-weight:700}.calendar-heading>span{color:var(--color-faint);font-size:12px}.calendar-controls,.calendar-jump,.calendar-month-nav{display:flex;align-items:center}.calendar-controls{gap:12px}.calendar-jump{gap:7px}.calendar-jump .btn{min-height:34px;padding:6px 10px;font-size:12px}.calendar-month-nav{gap:3px;padding:2px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-card)}.calendar-month-nav .icon-btn{width:30px;height:30px}.calendar-month-label{min-width:94px;color:var(--color-text);font-size:13px;font-weight:600;text-align:center}.calendar-workspace{display:grid;grid-template-columns:minmax(620px,1fr) minmax(340px,360px);align-items:start;gap:20px}.calendar-month-column{min-width:0}.calendar-month-loading{display:grid;min-height:420px;place-items:center}.calendar-month-card{overflow:hidden;padding:18px}.calendar-overview{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:13px;padding-bottom:13px;border-bottom:1px solid var(--color-border)}.calendar-overview-main,.calendar-overview-stats,.calendar-overview-stats span{display:flex;align-items:center}.calendar-overview-main{gap:8px;color:var(--color-sub);font-size:12px}.calendar-overview-main strong{color:var(--color-text);font-size:18px;font-variant-numeric:tabular-nums}.calendar-overview-icon{display:grid;width:30px;height:30px;border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-link);place-items:center}.calendar-overview-stats{flex-wrap:wrap;justify-content:flex-end;gap:11px;color:var(--color-sub);font-size:11px}.calendar-overview-stats span{gap:5px}.overview-dot,.legend-task-dot,.legend-done-dot{width:7px;height:7px;border-radius:50%}.overview-dot.pending,.legend-task-dot{background:#3d9254}.overview-dot.done,.legend-done-dot{background:var(--color-success)}.future-summary{padding:3px 7px;border-radius:4px;background:#eef8f0;color:#347443}.heatmap-weekdays,.heatmap-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.heatmap-weekdays{margin-bottom:7px}.heatmap-weekday{padding:2px 0;color:var(--color-faint);font-size:11px;font-weight:600;text-align:center}.heatmap-weekday:nth-child(6),.heatmap-weekday:nth-child(7){color:var(--color-sub)}.heatmap-cell{position:relative;display:flex;overflow:hidden;min-width:0;min-height:96px;padding:7px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--cell-heat, var(--color-card));color:var(--color-text);font:inherit;text-align:left;cursor:pointer;flex-direction:column;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.heatmap-cell:hover{border-color:var(--color-border-strong);box-shadow:inset 0 0 0 1px #37352f0d}.heatmap-cell:focus-visible{z-index:2;outline:2px solid var(--color-link);outline-offset:1px}.heatmap-cell.selected{z-index:1;padding:6px;border:2px solid var(--color-danger);box-shadow:0 0 0 2px #e03e3e1f}.heatmap-cell.future{color:var(--color-sub)}.heatmap-cell.future.has-pending{border-color:#acd1b5;background:color-mix(in srgb,#3d9254 7%,var(--cell-heat));color:var(--color-text)}.heatmap-cell.future.has-pending.selected{border-color:var(--color-danger)}.heatmap-blank{border-color:transparent;background:transparent;box-shadow:none;cursor:default}.heatmap-cell-top{display:flex;align-items:flex-start;justify-content:space-between;gap:4px}.heatmap-day{display:grid;width:23px;height:23px;border-radius:50%;font-size:12px;font-weight:650;font-variant-numeric:tabular-nums;place-items:center}.heatmap-cell.today .heatmap-day{background:var(--color-text);color:#fff}.heatmap-task-count{min-width:19px;padding:2px 5px;border-radius:4px;background:#3d925424;color:#347443;font-size:9px;font-weight:700;font-variant-numeric:tabular-nums;text-align:center}.heatmap-task-preview{display:flex;min-width:0;margin-top:5px;flex-direction:column;gap:3px}.heatmap-task-title{display:flex;align-items:center;overflow:hidden;min-width:0;gap:5px;padding:2px 4px;border-radius:3px;background:#ffffff94;color:var(--color-text);font-size:10px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.heatmap-task-title i{width:5px;height:5px;border-radius:50%;background:#3d9254;flex:0 0 auto}.heatmap-task-label{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.heatmap-task-title.status-done{color:var(--color-faint);text-decoration:line-through}.heatmap-task-title.status-done i{background:var(--color-success)}.heatmap-more{padding-left:4px;color:var(--color-faint);font-size:9px;font-weight:600}.tablet-more,.heatmap-mobile-summary{display:none}.heatmap-legend{display:flex;align-items:center;gap:7px;margin-top:13px;padding-top:11px;border-top:1px solid var(--color-border);color:var(--color-faint);font-size:10px}.legend-item{display:inline-flex;align-items:center;gap:4px;margin-right:3px}.legend-heat{margin-left:auto}.legend-dot{display:inline-block;width:11px;height:11px;border:1px solid rgba(55,53,47,.05);border-radius:3px}.calendar-day-panel{position:sticky;top:20px;overflow-y:auto;max-height:calc(100vh - 40px);padding:18px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-card);scrollbar-width:thin}.calendar-day-loading{display:grid;min-height:260px;place-items:center}.calendar-day-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding-bottom:15px}.calendar-day-year{display:block;margin-bottom:2px;color:var(--color-faint);font-size:10px}.calendar-day-heading h2{margin:0;font-size:19px;line-height:1.2}.calendar-day-metrics{display:flex;align-items:flex-end;gap:8px}.calendar-day-metrics span{display:flex;color:var(--color-faint);font-size:9px;flex-direction:column}.calendar-day-metrics strong{color:var(--color-text);font-size:11px;font-weight:650;font-variant-numeric:tabular-nums}.calendar-day-details,.calendar-event-section,.calendar-note-section{padding:16px 0;border-top:1px solid var(--color-border)}.calendar-note-section{padding-bottom:2px}.calendar-panel-title{display:flex;align-items:center;gap:7px;margin-bottom:11px;color:var(--color-sub)}.calendar-panel-title h3{margin:0;color:var(--color-text);font-size:13px;font-weight:600}.calendar-task-list{display:flex;flex-direction:column;gap:7px}.calendar-task-card{--task-card-color: #787774;display:flex;align-items:center;overflow:hidden;min-height:66px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-soft);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.calendar-task-card.has-task-color{border-color:color-mix(in srgb,var(--task-card-color) 20%,var(--color-card));background:color-mix(in srgb,var(--task-card-color) 7%,var(--color-card))}.calendar-task-card:hover,.calendar-task-card:focus-within{border-color:var(--color-border-strong)}.calendar-task-card.has-task-color:hover,.calendar-task-card.has-task-color:focus-within{border-color:color-mix(in srgb,var(--task-card-color) 32%,var(--color-card));background:color-mix(in srgb,var(--task-card-color) 11%,var(--color-card))}.calendar-task-main{display:flex;align-items:flex-start;min-width:0;padding:10px;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;flex:1;gap:9px}.calendar-task-status{display:flex;padding-top:1px;color:var(--color-faint);flex-shrink:0}.calendar-task-card.status-done .calendar-task-status{color:var(--color-success)}.calendar-task-copy{display:flex;min-width:0;color:var(--color-sub);font-size:11px;flex-direction:column;gap:3px}.calendar-task-copy strong{overflow:hidden;color:var(--color-text);font-size:13px;font-weight:550;text-overflow:ellipsis;white-space:nowrap}.calendar-task-card.status-done .calendar-task-copy strong{color:var(--color-faint);text-decoration:line-through}.calendar-task-meta{color:var(--color-faint);font-size:10px}.calendar-task-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.calendar-task-edit{width:32px;height:32px;margin-right:6px;flex-shrink:0}.calendar-event-list{display:flex;flex-direction:column}.calendar-event{display:grid;grid-template-columns:48px 14px minmax(0,1fr);min-height:64px;gap:6px}.calendar-event-time{padding-top:10px;color:var(--color-faint);font-size:10px;font-variant-numeric:tabular-nums;text-align:right}.calendar-event-axis{position:relative;display:flex;justify-content:center}.calendar-event-axis:after{position:absolute;top:18px;bottom:-4px;width:1px;background:var(--color-border);content:""}.calendar-event:last-child .calendar-event-axis:after{display:none}.calendar-event-axis span{position:relative;z-index:1;width:8px;height:8px;margin-top:14px;border:2px solid var(--color-card);border-radius:50%;background:var(--color-faint);box-shadow:0 0 0 1px var(--color-border-strong)}.event-task_completed .calendar-event-axis span{background:var(--color-success)}.event-focus .calendar-event-axis span{background:var(--color-link)}.calendar-event-card{width:100%;margin-bottom:8px;padding:9px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fbfbfa;color:var(--color-text);font:inherit;text-align:left;cursor:pointer;transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.calendar-event-card:hover{border-color:var(--color-border-strong);background:var(--color-card)}.calendar-event-card:focus-visible{outline:2px solid var(--color-link);outline-offset:2px}.calendar-event-heading,.calendar-event-heading>span,.calendar-event-task{display:flex;align-items:center}.calendar-event-heading{justify-content:space-between;gap:7px;color:var(--color-sub);font-size:11px}.calendar-event-heading>span,.calendar-event-task{gap:5px}.calendar-event-heading em{color:var(--color-faint);font-size:9px;font-style:normal}.calendar-event-task{margin-top:5px;color:var(--color-text);font-size:12px;font-weight:550}.calendar-event-focus{margin-top:3px;color:var(--color-faint);font-size:10px}.calendar-note-section p{margin:0;color:var(--color-sub);font-size:12px;line-height:1.7;white-space:pre-wrap}@container calendar-page (max-width: 1023px){.calendar-workspace{display:block}.calendar-day-panel{position:static;overflow:visible;max-height:none;margin-top:20px;padding:0;border:0;background:transparent}.calendar-day-loading{min-height:180px}.calendar-day-heading{margin-bottom:12px;padding:0}.calendar-day-details,.calendar-event-section,.calendar-note-section{margin-bottom:16px;padding:18px;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-card)}.heatmap-cell{min-height:86px}.heatmap-task-preview .heatmap-task-title:nth-of-type(n+2),.desktop-more{display:none}.tablet-more{display:block}}@container calendar-page (max-width: 640px){.calendar-header{align-items:flex-start;margin-bottom:16px;flex-direction:column}.calendar-heading>span{display:none}.calendar-controls{width:100%;align-items:stretch;flex-direction:column;gap:8px}.calendar-month-nav,.calendar-jump{justify-content:space-between}.calendar-month-label{flex:1}.calendar-jump .minical{min-width:0;flex:1}.calendar-jump .minical-trigger{width:100%}.calendar-month-card{padding:10px}.calendar-overview{align-items:flex-start;margin-bottom:10px;padding-bottom:10px;flex-direction:column}.calendar-overview-stats{justify-content:flex-start}.heatmap-weekdays,.heatmap-grid{gap:3px}.heatmap-weekday{font-size:10px}.heatmap-cell{min-height:58px;padding:4px;border-radius:5px}.heatmap-cell.selected{padding:3px}.heatmap-day{width:20px;height:20px;font-size:11px}.heatmap-task-count,.heatmap-task-preview{display:none}.heatmap-mobile-summary{display:flex;align-items:center;overflow:hidden;min-width:0;margin-top:auto;gap:3px;color:var(--color-sub);font-size:8px;line-height:1.2;white-space:nowrap}.heatmap-mobile-summary i{width:4px;height:4px;border-radius:50%;background:var(--color-faint);flex:0 0 auto}.heatmap-mobile-summary i.pending{background:#3d9254}.heatmap-mobile-summary i.done{background:var(--color-success)}.heatmap-legend{flex-wrap:wrap}.legend-heat{margin-left:0}.calendar-day-heading{align-items:flex-start;flex-direction:column}.calendar-day-metrics{width:100%;justify-content:flex-start}.calendar-day-metrics span{min-width:52px}.calendar-day-details,.calendar-event-section,.calendar-note-section{padding:14px}.calendar-task-edit{width:36px;height:36px}.calendar-event{grid-template-columns:45px 12px minmax(0,1fr);gap:5px}.calendar-event-heading{align-items:flex-start;flex-direction:column;gap:2px}}.stats-page{max-width:1120px}.stats-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}.stats-title{margin:0;font-size:var(--fs-title);font-weight:700}.stats-header p{margin:4px 0 0;color:var(--color-sub);font-size:13px}.stats-card-header{display:flex;align-items:center;gap:7px;min-height:24px;margin-bottom:14px;color:var(--color-sub);font-size:14px;font-weight:600}.stats-filter-card{padding-bottom:18px}.stats-presets{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.stats-presets button{min-height:28px;padding:4px 9px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-card);color:var(--color-sub);font:inherit;font-size:12px;cursor:pointer}.stats-presets button:hover{background:var(--color-accent-soft);color:var(--color-text)}.stats-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.stats-filter-grid label{display:flex;flex-direction:column;gap:5px;color:var(--color-sub);font-size:11px}.stats-checkbox-group{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:14px 0 0;padding:0;border:0}.stats-checkbox-group legend{float:left;margin-right:10px;color:var(--color-sub);font-size:12px;font-weight:600}.stats-checkbox-group label{display:inline-flex;align-items:center;gap:5px;color:var(--color-sub);font-size:12px;cursor:pointer}.stats-checkbox-group input{width:15px;height:15px;margin:0;accent-color:var(--color-accent)}.stats-tag-filter{display:grid;grid-template-columns:60px minmax(0,1fr);gap:10px;margin-top:14px}.stats-tag-filter>span{padding-top:4px;color:var(--color-sub);font-size:12px;font-weight:600}.stats-tag-filter>div{display:flex;flex-wrap:wrap;gap:6px}.stats-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.stats-kpi{display:flex;align-items:center;gap:12px;min-width:0;padding:16px}.stats-kpi>span{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex-shrink:0;border-radius:var(--radius-sm);background:var(--color-accent-soft);color:var(--color-link)}.stats-kpi>div{display:flex;flex-direction:column;min-width:0}.stats-kpi small{color:var(--color-sub);font-size:11px}.stats-kpi strong{overflow:hidden;margin-top:2px;color:var(--color-text);font-size:19px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.stats-chart-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);gap:16px}.stats-chart-card{min-width:0}.nivo-chart{width:100%;height:310px}.nivo-chart-placeholder{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:7px;width:100%;height:100%;color:var(--color-faint);font-size:12px}.stats-chart-grid .nivo-chart{height:290px}.stats-chart-grid .pie-chart-layout{height:auto}.pie-chart-caption{margin:-3px 0 6px;color:var(--color-faint);font-size:11px;line-height:1.5}.pie-chart-canvas{width:100%;height:238px}.pie-chart-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;margin:8px 0 0;padding:10px 0 0;border-top:1px solid var(--color-border);list-style:none}.pie-chart-legend li{display:grid;grid-template-columns:9px minmax(0,1fr) auto auto;align-items:center;gap:7px;min-width:0;color:var(--color-sub);font-size:11px}.pie-chart-legend i{width:9px;height:9px;border-radius:2px}.pie-chart-legend span{overflow:hidden;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap}.pie-chart-legend b{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.pie-chart-legend em{min-width:34px;color:var(--color-faint);font-style:normal;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.chart-tooltip{min-width:158px;max-width:240px;padding:10px 11px;border:1px solid var(--color-border);border-radius:6px;background:#fffffffa;box-shadow:0 8px 24px #0f0f0f24;color:var(--color-text);font-size:12px;pointer-events:none}.chart-tooltip-title{display:block;overflow:hidden;margin-bottom:7px;font-size:11px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.chart-tooltip-items{display:flex;flex-direction:column;gap:6px}.chart-tooltip-item{display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:7px}.chart-tooltip-item i{width:8px;height:8px;border-radius:2px}.chart-tooltip-item span{overflow:hidden;color:var(--color-sub);text-overflow:ellipsis;white-space:nowrap}.chart-tooltip-item b{color:var(--color-text);font-size:12px;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}@media(max-width:900px){.stats-filter-grid,.stats-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.stats-chart-grid{grid-template-columns:1fr}}@media(max-width:560px){.stats-header{align-items:flex-start;flex-direction:column}.stats-filter-grid,.stats-kpis,.stats-tag-filter{grid-template-columns:1fr}.nivo-chart,.stats-chart-grid .nivo-chart{height:260px}.stats-chart-grid .pie-chart-layout{height:auto}.pie-chart-canvas{height:230px}.pie-chart-legend{grid-template-columns:1fr}}.settings-page{max-width:820px}.settings-title{font-size:var(--fs-title);font-weight:700;letter-spacing:-.02em;margin-bottom:28px}.manager-header{display:flex;align-items:center;gap:8px;font-size:var(--fs-card-title);font-weight:600;margin-bottom:12px;color:var(--color-text)}.manager-header .btn{margin-left:auto}.tag-manager-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px}.tag-manager-toolbar>span{flex-shrink:0;color:var(--color-faint);font-size:12px}.tag-search{position:relative;display:flex;align-items:center;flex:1}.tag-search svg{position:absolute;left:10px;z-index:1;color:var(--color-faint)}.tag-search input{padding-left:32px}.manager-header .icon-btn{margin-left:auto}.manager-empty{font-size:13px;color:var(--color-faint);padding:12px 0}.manager-list{display:flex;flex-direction:column;gap:2px}.manager-row{display:flex;align-items:center;gap:10px;padding:8px;border-radius:var(--radius-sm)}.manager-row:hover{background:#f7f7f5}.manager-color{width:10px;height:10px;border-radius:50%;flex-shrink:0}.manager-body{flex:1;min-width:0}.tag-manager-row>.notion-tag{flex-shrink:0;max-width:150px}.manager-meta{margin-top:2px;color:var(--color-faint);font-size:11px}.tag-preview-row{display:flex;align-items:center;gap:12px;color:var(--color-sub);font-size:12px}.manager-name{font-size:14px;font-weight:500;display:flex;align-items:center;gap:8px}.manager-sub{font-size:12px;color:var(--color-faint)}.manager-badge{font-size:10px;background:var(--color-accent);color:#fff;padding:1px 6px;border-radius:4px}.manager-badge.muted{background:var(--color-border);color:var(--color-sub)}.settings-form{display:flex;flex-direction:column;gap:14px}.settings-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--color-sub)}.color-options{display:flex;flex-wrap:wrap;gap:8px}.color-dot{width:28px;height:28px;border-radius:var(--radius-sm);border:2px solid transparent;cursor:pointer}.color-dot.active{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent-soft)}.custom-color-row{display:grid;grid-template-columns:42px minmax(0,170px);gap:8px;align-items:center}.custom-color-row input[type=color]{width:42px;height:36px;padding:3px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-card);cursor:pointer}.field-error{color:var(--color-danger)}.password-form{max-width:440px}.pwa-manager-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.pwa-manager-row strong{font-size:14px;font-weight:600}.pwa-manager-row p{margin-top:3px;color:var(--color-faint);font-size:12px}.inline-create{display:flex;gap:8px;align-items:center;margin-bottom:12px}.inline-create input[type=text]{flex:1;font-size:14px}.data-manager-hint{font-size:13px;color:var(--color-sub);margin-bottom:12px}.data-manager-actions{display:flex;gap:10px;flex-wrap:wrap}.data-manager-actions .btn{display:flex;align-items:center;gap:6px}.data-manager-modal-hint{font-size:13px;color:var(--color-sub);margin-bottom:16px;line-height:1.7}.data-manager-modal-actions{display:flex;gap:10px;justify-content:flex-end}.toast-container{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:500;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{display:flex;align-items:center;gap:8px;background:var(--color-text);color:#fff;padding:10px 12px;border-radius:var(--radius);font-size:14px;box-shadow:var(--shadow-lg);pointer-events:auto;max-width:90vw;animation:toast-in .2s ease-out}.toast-success{background:var(--color-success)}.toast-error{background:var(--color-danger)}.toast-message{flex:1}.toast-action{border:1px solid rgba(255,255,255,.5);background:#ffffff24;color:#fff;padding:4px 8px;border-radius:5px;font:inherit;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer}.toast-action:hover,.toast-action:focus-visible{background:#ffffff3d}.toast-close{border:none;background:none;color:#fffc;padding:2px;display:flex;cursor:pointer;border-radius:4px}.toast-close:hover{color:#fff}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.floating-timer{position:fixed;right:20px;bottom:20px;z-index:900;width:72px;height:72px;border-radius:var(--radius-lg);border:1px solid var(--color-border);background:var(--color-card);color:var(--color-text);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;transition:transform .15s var(--ease),box-shadow .15s var(--ease);animation:float-in .2s var(--ease)}.floating-timer:hover{transform:translateY(-2px);box-shadow:var(--shadow-pop)}.floating-timer:active{transform:scale(.97)}.floating-timer.paused{opacity:.9}.floating-timer-time{font-size:15px;font-weight:700;line-height:1;letter-spacing:-.01em}.floating-timer-label{font-size:10px;color:var(--color-faint);line-height:1}@keyframes float-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@media(max-width:767px){.floating-timer{right:16px;bottom:72px;width:64px;height:64px}.floating-timer-time{font-size:13px}}:root{--color-life: #0aa06e;--color-study: #3b82f6;--color-daily: #f5a623;--color-bg: #ffffff;--color-bg-soft: #f7f6f3;--color-card: #ffffff;--color-text: #37352f;--color-sub: #787774;--color-faint: #9b9a97;--color-border: #e9e8e5;--color-border-strong: #d3d1cb;--color-danger: #e03e3e;--color-success: #0aa06e;--color-accent: #37352f;--color-accent-soft: #f1f0ee;--color-link: #3b82f6;--radius-sm: 6px;--radius: 8px;--radius-lg: 10px;--shadow: 0 1px 2px rgba(0, 0, 0, .04);--shadow-lg: 0 8px 30px rgba(0, 0, 0, .09);--shadow-pop: 0 10px 40px rgba(0, 0, 0, .12);--nav-w-desktop: 220px;--nav-h-mobile: 56px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--dur: .18s;--ease: cubic-bezier(.4, 0, .2, 1);--fs-title: 24px;--fs-card-title: 14px;--fs-body: 15px;--fs-sub: 13px;--fs-small: 12px;--fs-input: 14px;--fs-tiny: 11px}:root{--color-life: #0f7b6c;--color-study: #2383e2;--color-daily: #b87800;--color-bg: #fbfbfa;--color-bg-soft: #f7f7f5;--color-border: #e7e7e5;--color-border-strong: #c9c8c4;--color-danger: #d44c47;--color-success: #0f7b6c;--color-accent: #2383e2;--color-accent-strong: #1d6fbe;--color-accent-soft: #eef6fc;--color-link: #2383e2;--color-danger-soft: #fdf0ef;--color-success-soft: #eef8f5;--radius-sm: 4px;--radius: 6px;--radius-lg: 8px;--shadow: 0 1px 2px rgba(15, 15, 15, .04);--shadow-lg: 0 8px 24px rgba(15, 15, 15, .08);--shadow-pop: 0 12px 36px rgba(15, 15, 15, .14);--nav-w-desktop: 240px;--fs-title: 26px;--fs-body: 14px}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Arial,sans-serif;background:var(--color-bg);color:var(--color-text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"kern" 1,"liga" 1}button{font-family:inherit;cursor:pointer}button:disabled{cursor:not-allowed}input,textarea,select{font-family:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,p{overflow-wrap:anywhere}::selection{background:#2383e233}:focus-visible{outline:2px solid var(--color-link);outline-offset:2px;border-radius:2px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:5px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--color-faint);border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-track{background:transparent}@keyframes page-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.app-main>*{animation:page-fade-in .22s var(--ease)}.offline-banner{position:fixed;z-index:1200;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translate(-50%);display:flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-text);color:#fff;box-shadow:var(--shadow-pop);font-size:12px}.offline-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;background:var(--color-bg-soft);color:var(--color-sub);text-align:center}.offline-page>svg{color:var(--color-success)}.offline-page h1{color:var(--color-text);font-size:22px}.offline-page-state{display:flex;align-items:center;gap:7px;color:var(--color-text);font-weight:600}
