:root{--bg:#fff;--bg-sidebar:#f7f7f5;--bg-hover:#37352f14;--bg-active:#37352f1f;--text:#37352f;--text-muted:#37352f99;--text-faint:#37352f66;--border:#37352f29;--accent:#2383e2;--danger:#e03e3e;--success:#0f7b6c;--success-bg:#ddedea;--code-bg:#f1f1ef;--highlight:#fdecc8;--anno-yellow:#ffd4006b;--anno-green:#3cbe5a57;--anno-blue:#2d8cff4d;--anno-pink:#ff46964d;--margin-width:300px;--event-bg:#e3effc;--event-border:#2383e2;--task-bg:#f1ecf9;--task-border:#9065b0;--birthday-bg:#fbecdd;--birthday-border:#d9730d;--in-progress:#d9730d;--complete:#0f7b6c;--shadow:0 4px 16px #0f0f0f1f, 0 0 0 1px #0f0f0f0f;--sidebar-width:260px;--today-width:300px;--command-bar-space:72px;--radius:6px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji";--mono:"SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--viz-1:#2a78d6;--viz-ord-1:#86b6ef;--viz-ord-2:#3987e5;--viz-ord-3:#1c5cab;--viz-ord-4:#0d366b;--viz-seq-0:#ebebe8;--viz-seq-1:#b7d3f6;--viz-seq-2:#6da7ec;--viz-seq-3:#2a78d6;--viz-seq-4:#184f95;--viz-grid:#e9e8e3;--viz-axis:#c3c2b7;--cloze-bg:#e8f1fc;--cloze-border:#8fbaf0}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;line-height:1.5}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}a{color:inherit}.muted{color:var(--text-muted)}.btn{border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);align-items:center;gap:6px;padding:6px 12px;font-size:14px;text-decoration:none;display:inline-flex}.btn:hover{background:var(--bg-hover)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#1b74cc}.btn-ghost{color:var(--text-muted);border-color:#0000}.icon-btn{width:28px;height:28px;color:var(--text-muted);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;font-size:16px;line-height:1;display:inline-flex}.icon-btn:hover{background:var(--bg-hover);color:var(--text)}.icon-btn.small{width:22px;height:22px;font-size:14px}.icon-btn.danger:hover{color:var(--danger)}.screen-center{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;height:100%;min-height:60vh;padding:24px;display:flex}.login{flex-direction:column;gap:12px;width:min(320px,100%);display:flex}.login h1{margin:0 0 8px}.login input{font:inherit;border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px}.login-error{color:var(--danger);font-size:13px}.login-hint{color:var(--text-muted);margin:0;font-size:14px}.security-body{max-width:640px}.security-section{margin-bottom:32px}.security-section h2{margin:0 0 8px;font-size:18px}.security-keys{margin:12px 0;padding:0;list-style:none}.security-keys li{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.google-connected{border-radius:var(--radius);background:var(--success-bg);color:var(--success);padding:8px 12px}.security-key-name{font-weight:500}.security-key-meta{font-size:13px}.security-add{flex-wrap:wrap;gap:8px;display:flex}.security-add input{font:inherit;border:1px solid var(--border);border-radius:var(--radius);flex:200px;padding:8px 10px}.app{height:100%;display:flex}.main{min-width:0;height:100%;padding-bottom:var(--command-bar-space);flex:1;overflow-y:auto}.today-panel{width:var(--today-width);background:var(--bg-sidebar);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;height:100%;font-size:14px;display:flex}.today-backdrop{display:none}.today-header{justify-content:space-between;align-items:flex-start;padding:10px 8px 10px 14px;display:flex}.today-title{font-weight:600}.today-date{color:var(--text-muted);font-size:13px}.today-body{padding:0 6px var(--command-bar-space);flex:1;overflow-y:auto}.today-section{margin-bottom:14px}.today-heading{text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);margin:0;padding:6px 8px 4px;font-size:12px;font-weight:600}.today-timeline,.today-tasks{margin:0;padding:0;list-style:none}.today-event{border-left:3px solid var(--event-border);background:var(--event-bg);color:var(--text);border-radius:4px;flex-direction:column;margin:2px 2px 4px;padding:5px 8px;text-decoration:none;display:flex}.today-event:hover{filter:brightness(.97)}.today-event.past{opacity:.55}.today-event.now{box-shadow:0 0 0 1.5px var(--event-border)}.today-event-time{color:var(--text-muted);font-size:12px}.today-event-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.today-now{background:var(--danger);height:2px;margin:6px 2px 6px 8px;position:relative}.today-now:before{content:"";background:var(--danger);border-radius:50%;width:8px;height:8px;position:absolute;top:-3px;left:-5px}.today-task{border-radius:4px;align-items:center;gap:8px;min-height:28px;padding:2px 8px;display:flex}.today-task:hover{background:var(--bg-hover)}.today-task-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:1;text-decoration:none;overflow:hidden}.today-task.complete .today-task-title{color:var(--text-faint);text-decoration:line-through}.today-task-meta{color:var(--text-muted);flex-shrink:0;font-size:12px}.today-task-meta.overdue{color:var(--danger)}.today-toggle{margin-left:auto}.app.today-open .command-bar{right:var(--today-width)}@media (width<=1360px){.today-panel{z-index:30;box-shadow:var(--shadow);position:fixed;top:0;bottom:0;right:0}.today-backdrop{z-index:25;background:#0000001f;display:block;position:fixed;inset:0}.app.today-open .command-bar{z-index:24;right:0}}@media (width<=768px){.today-panel{width:min(var(--today-width), 85vw)}}.sidebar{width:var(--sidebar-width);background:var(--bg-sidebar);border-right:1px solid var(--border);-webkit-user-select:none;user-select:none;flex-direction:column;flex-shrink:0;height:100%;font-size:14px;display:none}.app.sidebar-open .sidebar{display:flex}.sidebar-backdrop{display:none}.sidebar-header{justify-content:space-between;align-items:center;padding:10px 8px 10px 14px;display:flex}.sidebar-brand{font-weight:600}.sidebar-tree{flex:1;padding:4px 6px;overflow-y:auto}.sidebar-footer{border-top:1px solid var(--border);padding-top:4px}.sidebar-note{color:var(--text-faint);padding:6px 10px;font-size:13px}.sidebar-action{width:100%;color:var(--text-muted);text-align:left;align-items:center;gap:8px;padding:6px 14px;display:flex}.sidebar-action:hover{background:var(--bg-hover)}.sidebar-action:disabled{opacity:.5}.sidebar-action-icon{text-align:center;width:18px}.badge{background:var(--bg-active);border-radius:10px;margin-left:auto;padding:0 6px;font-size:11px}.tree-row{height:28px;color:var(--text-muted);border-radius:4px;align-items:center;gap:2px;padding-right:4px;display:flex;position:relative}.tree-row:hover{background:var(--bg-hover)}.tree-row.active{background:var(--bg-active);color:var(--text);font-weight:500}.tree-chevron{width:20px;height:20px;color:var(--text-faint);border-radius:3px;flex-shrink:0;font-size:12px;transition:transform .12s}.tree-chevron.open{transform:rotate(90deg)}.tree-chevron:hover{background:var(--bg-active);color:var(--text)}.tree-row-wiki{padding-left:8px}.tree-row-wiki .tree-link{gap:8px}.tree-link{flex:1;align-items:center;gap:6px;min-width:0;height:100%;text-decoration:none;display:flex}.tree-icon{text-align:center;flex-shrink:0;width:18px;font-size:14px}.tree-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.tree-actions{gap:2px;display:none}.tree-row:hover .tree-actions{display:flex}.tree-empty{height:26px;color:var(--text-faint);font-size:13px;line-height:26px}.trash{border-top:1px solid var(--border);padding:4px 0}.trash-list{max-height:200px;padding:0 6px 4px;overflow-y:auto}.trash-row{height:28px;color:var(--text-muted);border-radius:4px;align-items:center;gap:6px;padding:0 4px 0 10px;display:flex}.trash-row:hover{background:var(--bg-hover)}.menu-anchor{position:relative}.menu{z-index:50;background:var(--bg);border-radius:var(--radius);min-width:170px;box-shadow:var(--shadow);padding:4px;font-size:14px;position:absolute;top:100%}.menu-left{left:0}.menu-right{right:0}.menu-item{text-align:left;border-radius:4px;width:100%;padding:6px 10px;display:block}.menu-item:hover{background:var(--bg-hover)}.menu-item.danger{color:var(--danger)}.page{flex-direction:column;min-height:100%;display:flex}.page-header{z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffe6;align-items:center;gap:6px;height:44px;padding:0 10px;font-size:14px;display:flex;position:sticky;top:0}.breadcrumbs{white-space:nowrap;align-items:center;min-width:0;display:flex;overflow:hidden}.crumb{color:var(--text-muted);align-items:center;display:inline-flex}.crumb a{border-radius:4px;padding:2px 6px;text-decoration:none}.crumb a:hover{background:var(--bg-hover)}.crumb-sep{color:var(--text-faint);margin:0 2px}.crumb.current{color:var(--text);text-overflow:ellipsis;padding:2px 6px;overflow:hidden}.spacer{flex:1}.save-status{color:var(--text-faint);white-space:nowrap;font-size:12px}.save-status.error{color:var(--danger)}.page-body{width:100%;max-width:760px;margin:0 auto;padding:48px 48px 30vh}.page-title{resize:none;width:100%;font:inherit;color:var(--text);background:0 0;border:none;outline:none;margin:0 0 8px;padding:0;font-size:40px;font-weight:700;line-height:1.2;display:block;overflow:hidden}.page-title::placeholder{color:var(--text-faint)}.editor{position:relative}.editor-content{outline:none;min-height:120px;font-size:16px}.editor-content>*+*{margin-top:2px}.editor-content p{margin:0;padding:3px 0}.editor-content h1,.editor-content h2,.editor-content h3{margin:0;font-weight:600;line-height:1.3}.editor-content h1{padding:24px 0 4px;font-size:30px}.editor-content h2{padding:18px 0 4px;font-size:24px}.editor-content h3{padding:14px 0 4px;font-size:20px}.editor-content ul,.editor-content ol{margin:0;padding-left:24px}.editor-content li>p{padding:2px 0}.editor-content blockquote{border-left:3px solid var(--text);margin:4px 0;padding-left:14px}.editor-content code{font-family:var(--mono);background:var(--code-bg);color:#eb5757;border-radius:3px;padding:2px 4px;font-size:85%}.editor-content pre{background:var(--code-bg);border-radius:var(--radius);margin:6px 0;padding:16px;overflow-x:auto}.editor-content pre code{color:inherit;background:0 0;padding:0;font-size:14px}.editor-content hr{border:none;border-top:1px solid var(--border);margin:12px 0}.editor-content a{color:var(--accent);text-underline-offset:2px;cursor:pointer;text-decoration:underline}.editor-content mark{background:var(--highlight);border-radius:2px;padding:0 1px}.editor-content img{border-radius:4px;max-width:100%;height:auto;margin:6px 0;display:block}.editor-content img.ProseMirror-selectednode{outline:2px solid var(--accent)}.editor-content .is-empty:before{content:attr(data-placeholder);color:var(--text-faint);float:left;pointer-events:none;height:0}.editor-content p.is-empty:not(.is-editor-empty):not(:focus-within):before{content:""}.editor-content p.is-empty.has-focus:before{content:attr(data-placeholder)}ul[data-type=taskList]{padding-left:2px;list-style:none}ul[data-type=taskList] li{align-items:flex-start;gap:8px;display:flex}ul[data-type=taskList] li>label{flex-shrink:0;margin-top:5px}ul[data-type=taskList] li>div{flex:1}ul[data-type=taskList] li[data-checked=true]>div{color:var(--text-faint);text-decoration:line-through}ul[data-type=taskList] input[type=checkbox]{accent-color:var(--accent);cursor:pointer;width:16px;height:16px}.editor-content .tableWrapper{margin:8px 0;overflow-x:auto}.editor-content table{border-collapse:collapse;table-layout:fixed;width:100%}.editor-content td,.editor-content th{border:1px solid var(--border);vertical-align:top;min-width:60px;padding:6px 8px;position:relative}.editor-content th{background:var(--bg-sidebar);text-align:left;font-weight:600}.editor-content .selectedCell:after{content:"";pointer-events:none;background:#2383e21f;position:absolute;inset:0}.editor-content .column-resize-handle{background:var(--accent);pointer-events:none;width:4px;position:absolute;top:0;bottom:0;right:-2px}.resize-cursor{cursor:col-resize}.file-attachment{margin:4px 0;position:relative}.file-rename{background:var(--bg);opacity:0;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.file-attachment:hover .file-rename,.file-rename:focus-visible{opacity:1}.file-attachment:hover .file-size{visibility:hidden}.file-attachment a{border:1px solid var(--border);border-radius:var(--radius);align-items:center;gap:10px;padding:8px 12px;text-decoration:none;display:flex}.file-attachment a:hover{background:var(--bg-hover)}.file-attachment.is-selected a{outline:2px solid var(--accent)}.file-icon{font-size:20px}.file-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.file-size{color:var(--text-faint);font-size:13px}.page-link{margin:2px 0}.page-link button{text-align:left;border-radius:4px;align-items:center;gap:6px;width:100%;padding:4px 6px;display:flex}.page-link button:hover{background:var(--bg-hover)}.page-link.is-selected button{outline:2px solid var(--accent)}.page-link-title{text-decoration:underline;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border);text-underline-offset:3px;font-weight:500}.page-link.missing .page-link-title{color:var(--text-faint)}.slash-menu{z-index:100;background:var(--bg);border-radius:var(--radius);width:300px;max-height:340px;box-shadow:var(--shadow);padding:6px;overflow-y:auto}.slash-item{text-align:left;border-radius:4px;align-items:center;gap:10px;width:100%;padding:6px 8px;display:flex}.slash-item.is-selected{background:var(--bg-hover)}.slash-icon{border:1px solid var(--border);background:var(--bg);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:600;display:inline-flex}.slash-text{flex-direction:column;min-width:0;display:flex}.slash-title{font-size:14px}.slash-desc{color:var(--text-muted);font-size:12px}.slash-empty{color:var(--text-faint);padding:8px;font-size:13px}.bubble{background:var(--bg);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:2px;padding:4px;display:flex}.bubble-btn{border-radius:4px;min-width:28px;height:28px;padding:0 6px;font-size:13px;font-weight:600}.bubble-btn:hover{background:var(--bg-hover)}.bubble-btn.active{color:var(--accent)}.bubble-sep{background:var(--border);width:1px;height:18px;margin:0 4px}.ProseMirror-selectednode{outline:2px solid var(--accent)}.ProseMirror-gapcursor:after{border-top:1px solid var(--text)}.sidebar-link{text-decoration:none}.sidebar-link.active{background:var(--bg-active);color:var(--text)}.btn-danger{color:var(--danger)}.btn-danger:hover{background:#e03e3e14}.segmented{border:1px solid var(--border);border-radius:var(--radius);flex-shrink:0;font-size:13px;display:inline-flex;overflow:hidden}.segmented button{color:var(--text-muted);padding:4px 10px}.segmented button+button{border-left:1px solid var(--border)}.segmented button.active{background:var(--bg-active);color:var(--text)}.calendar{flex-direction:column;height:100%;display:flex}.calendar-header{border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0;height:auto;min-height:52px;padding:8px 12px}.calendar-title{white-space:nowrap;margin:0 0 0 6px;font-size:18px;font-weight:600}.calendar-note{color:var(--danger);padding:8px 16px;font-size:13px}.unscheduled{border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;display:flex;overflow-x:auto}.unscheduled-label{color:var(--text-muted);white-space:nowrap;font-size:12px}.unscheduled .item-chip{flex-shrink:0;max-width:220px}.has-calendar{--event-border:var(--cal-color);--event-bg:color-mix(in srgb, var(--cal-color) 22%, var(--bg));--task-border:var(--cal-color);--task-bg:color-mix(in srgb, var(--cal-color) 16%, var(--bg))}.status-btn.locked{cursor:default}.status-btn.locked:hover{background:0 0}.imported-details{flex-direction:column;gap:4px;display:flex}.imported-source{color:var(--text-muted);flex-wrap:wrap;gap:4px 10px;font-size:13px;display:flex}.imported-title{overflow-wrap:anywhere;margin:4px 0 0;font-size:20px;font-weight:600}.imported-when{color:var(--text-muted)}.imported-description{white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0}.calendars-menu{cursor:default;width:280px;max-height:min(70vh,520px);padding:8px;overflow-y:auto}.calendars-menu-empty{flex-direction:column;align-items:flex-start;gap:8px;padding:4px;display:flex}.calendars-menu-empty p{color:var(--text-muted);margin:0}.calendar-list-account+.calendar-list-account{border-top:1px solid var(--border);margin-top:10px;padding-top:10px}.calendar-list-email{text-overflow:ellipsis;margin:0 0 4px;font-size:13px;font-weight:600;overflow:hidden}.calendar-list-group{margin-top:6px}.calendar-list-kind{text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);padding:2px 4px;font-size:11px;font-weight:600}.calendar-list-item{cursor:pointer;border-radius:4px;align-items:center;gap:8px;padding:4px;display:flex}.calendar-list-item:hover{background:var(--bg-hover)}.calendar-list-item input{accent-color:var(--cal-color,var(--accent));margin:0}.calendar-swatch{background:var(--cal-color);border-radius:3px;flex-shrink:0;width:10px;height:10px}.calendar-swatch.none{background:var(--task-border)}.calendar-list-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.calendar-list-footer{border-top:1px solid var(--border);align-items:center;gap:8px;margin-top:10px;padding-top:8px;font-size:13px;display:flex}.calendar-list-footer .muted{flex:1}.calendar-list-manage{color:var(--text-muted)}.item{cursor:pointer;border-radius:4px;align-items:center;gap:4px;min-width:0;font-size:12px;line-height:1.3;display:flex;overflow:hidden}.item-event{background:var(--event-bg);border-left:3px solid var(--event-border)}.item-task{background:var(--task-bg);border-left:3px solid var(--task-border)}.item-birthday{background:var(--birthday-bg);border-left:3px solid var(--birthday-border);color:var(--text);text-decoration:none}.item-birthday-age{color:var(--text-muted)}.item.status-complete{opacity:.55}.item.status-complete .item-title{text-decoration:line-through}.item:hover{filter:brightness(.96)}.item-chip{white-space:nowrap;padding:1px 6px 1px 4px}.item-time{color:var(--text-muted);flex-shrink:0}.item-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.item-repeat{color:var(--text-faint);flex-shrink:0;margin-left:auto;padding-left:2px;font-size:11px}.status-btn{width:16px;height:16px;color:var(--text-muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;line-height:1;display:inline-flex}.status-btn:hover{background:#00000014}.status-btn.status-in_progress{color:var(--in-progress)}.status-btn.status-complete{color:var(--complete);font-weight:700}.month-grid{flex:1;grid-template-rows:auto;grid-template-columns:repeat(7,minmax(0,1fr));grid-auto-rows:minmax(96px,1fr);display:grid;overflow-y:auto}.month-weekday{text-transform:uppercase;color:var(--text-muted);text-align:center;border-bottom:1px solid var(--border);padding:4px 6px;font-size:11px}.month-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);cursor:pointer;flex-direction:column;gap:2px;min-width:0;padding:2px 4px 4px;display:flex}.month-cell:nth-child(7n+7){border-right:none}.month-cell.other-month{background:var(--bg-sidebar)}.month-cell.other-month .day-number{color:var(--text-faint)}.day-number{text-align:center;border-radius:12px;align-self:center;min-width:24px;height:24px;padding:0 4px;font-size:12px;line-height:24px}button.day-number:hover{background:var(--bg-hover)}.day-number.today,.today .day-number{background:var(--accent);color:#fff}.month-more{color:var(--text-muted);text-align:left;padding:0 4px;font-size:11px}.month-more:hover{color:var(--text)}.time-grid{--hour-col:52px;flex-direction:column;flex:1;min-height:0;display:flex}.time-grid-head{border-bottom:1px solid var(--border);flex-shrink:0;display:grid}.time-grid-day{flex-direction:column;align-items:center;padding:4px 0;display:flex}.time-grid-day:hover{background:var(--bg-hover)}.time-grid-weekday{text-transform:uppercase;color:var(--text-muted);font-size:11px}.time-grid-day.today .time-grid-weekday{color:var(--accent)}.time-grid-allday{border-bottom:1px solid var(--border);flex-shrink:0;display:grid}.time-grid-allday-label{color:var(--text-faint);text-align:center;align-self:center;font-size:10px}.time-grid-allday-cell{border-left:1px solid var(--border);flex-direction:column;gap:2px;min-width:0;padding:3px 2px;display:flex}.time-grid-body{flex:1;overflow-y:auto}.time-grid-inner{background-image:linear-gradient(to bottom, var(--border) 1px, transparent 1px);background-size:100% 48px;display:grid;position:relative}.hour-labels{position:relative}.hour-label{color:var(--text-faint);white-space:nowrap;background:var(--bg);font-size:10px;position:absolute;right:6px;transform:translateY(-50%)}.day-column{border-left:1px solid var(--border);cursor:pointer;position:relative}.item-block{border:1px solid var(--bg);border-left-width:3px;flex-direction:column;align-items:stretch;gap:0;padding:2px 4px 2px 3px;position:absolute}.item-block.item-event{border-left-color:var(--event-border)}.item-block.item-task{border-left-color:var(--task-border)}.item-block-line{align-items:center;gap:3px;min-width:0;display:flex}.item-meta{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.now-line{background:var(--danger);pointer-events:none;z-index:2;height:2px;position:absolute;left:0;right:0}.now-line:before{content:"";background:var(--danger);border-radius:50%;width:10px;height:10px;position:absolute;top:-4px;left:-5px}.dialog-backdrop{z-index:100;background:#0f0f0f4d;justify-content:center;align-items:flex-start;padding:10vh 16px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.dialog{background:var(--bg);width:100%;max-width:480px;box-shadow:var(--shadow);border-radius:10px;padding:18px}.task-form{flex-direction:column;gap:12px;font-size:14px;display:flex}.task-form .segmented{align-self:flex-start}.task-form label{color:var(--text-muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.task-form input,.task-form textarea,.task-form select{font:inherit;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);min-width:0;padding:6px 8px;font-size:14px}.task-form textarea{resize:vertical}.task-form .task-form-title{border-color:#0000;padding-left:0;font-size:18px;font-weight:600}.task-form .task-form-title:focus{border-color:var(--border);padding-left:8px}.task-form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.duration-input{color:var(--text-muted);align-items:center;gap:4px;display:flex}.task-form .duration-input input{width:56px}.form-error{color:var(--danger);font-size:13px}.dialog-actions{align-items:center;gap:8px;display:flex}.task-form-note{color:var(--text-muted);margin-top:-6px;font-size:12px}.repeat-editor{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sidebar);flex-direction:column;gap:10px;min-width:0;margin:-4px 0 0;padding:10px 12px;display:flex}.repeat-row{align-items:center;gap:6px;display:flex}.task-form .repeat-row input{width:64px}.repeat-days{gap:4px;display:flex}.repeat-days button{border:1px solid var(--border);background:var(--bg);width:30px;height:30px;color:var(--text-muted);font:inherit;cursor:pointer;border-radius:50%;font-size:12px}.repeat-days button.active{background:var(--accent);border-color:var(--accent);color:#fff}.repeat-ends{flex-direction:column;gap:6px;display:flex}.repeat-ends-label{color:var(--text-muted);font-size:12px}.task-form label.repeat-end{color:var(--text);flex-direction:row;align-items:center;gap:8px;font-size:14px}.task-form .repeat-end input[type=radio]{margin:0}.task-form .repeat-end input[type=number]{width:72px}.task-form .repeat-end input:disabled{opacity:.5}.scope-backdrop{z-index:110;padding-top:20vh}.scope-prompt{flex-direction:column;gap:14px;max-width:340px;font-size:14px;display:flex}.scope-prompt h2{margin:0;font-size:16px}.scope-options{flex-direction:column;gap:10px;display:flex}.scope-options label{cursor:pointer;align-items:center;gap:8px;display:flex}@media (width<=768px){.calendar-header{gap:4px;padding:6px 8px}.calendar-title{flex-basis:100%;order:10;margin:2px 0 0 4px;font-size:16px}.month-grid{grid-auto-rows:minmax(72px,auto);align-content:start}.month-cell .item-time{display:none}.month-cell .item-chip{padding:1px 2px}.time-grid{--hour-col:40px}.task-form-row{grid-template-columns:1fr}}.doc-viewer .crumb.current{text-overflow:ellipsis;overflow:hidden}.zoom-controls{align-items:center;display:flex}.zoom-value{min-width:46px;color:var(--text-muted);text-align:center;border-radius:4px;padding:2px 4px;font-size:12px}.zoom-value:hover{background:var(--bg-hover)}.icon-btn:disabled{opacity:.35;cursor:default}a.icon-btn{text-decoration:none}.anno-count{white-space:nowrap;padding:4px 8px}.anno-count.is-open{background:var(--bg-active);color:var(--text)}.doc-stage{flex:1;align-items:flex-start;display:flex;position:relative}.doc-content{flex:1;min-width:0;padding:16px 0 30vh;overflow-x:auto}.doc-loading,.doc-error{text-align:center;padding:48px 16px}.doc-error{color:var(--danger)}.pdf-doc{flex-direction:column;align-items:center;gap:16px;min-width:min-content;padding:0 16px;display:flex}.pdf-page{background:#fff;flex-shrink:0;position:relative;box-shadow:0 1px 4px #0f0f0f29,0 0 0 1px #0f0f0f0f}.pdf-page canvas{width:100%;height:100%;position:absolute;inset:0}.doc-viewer.is-reading{z-index:60;background:var(--bg-sidebar);flex-direction:column;display:flex;position:fixed;inset:0}.doc-viewer.is-reading .doc-stage{flex:1;min-height:0;overflow:auto}.doc-viewer.is-reading .doc-content{padding:0}.doc-viewer.is-reading .html-doc{padding:16px 0 30vh}.pdf-doc.is-spread{grid-template-columns:repeat(2,max-content);justify-content:center;gap:16px;padding:16px;display:grid}.icon-btn.is-active{background:var(--bg-hover)}.html-doc-body{overflow-wrap:break-word;max-width:760px;margin:0 auto;padding:16px 48px;font-size:16px;line-height:1.65}.html-doc-body img{max-width:100%;height:auto}.html-doc-body table{border-collapse:collapse}.html-doc-body td,.html-doc-body th{border:1px solid var(--border);padding:4px 8px}.html-doc-text .html-doc-body pre{font-family:var(--mono);white-space:pre-wrap;margin:0;font-size:14px}mark.anno{color:inherit;cursor:pointer;border-radius:2px}mark.anno-yellow{background:var(--anno-yellow)}mark.anno-green{background:var(--anno-green)}mark.anno-blue{background:var(--anno-blue)}mark.anno-pink{background:var(--anno-pink)}mark.anno.has-comment{box-shadow:inset 0 -2px #37352f59}mark.anno.is-active{box-shadow:inset 0 -2px 0 var(--text), 0 0 0 1px #37352f40}.swatch{border:1px solid #0f0f0f26;border-radius:50%;flex-shrink:0;width:20px;height:20px}.swatch.is-current{outline:2px solid var(--text);outline-offset:1px}.swatch-yellow{background:#ffd400}.swatch-green{background:#3cbe5a}.swatch-blue{background:#2d8cff}.swatch-pink{background:#ff4696}.selection-toolbar{z-index:40;background:var(--bg);border-radius:var(--radius);height:40px;box-shadow:var(--shadow);white-space:nowrap;align-items:center;gap:6px;padding:0 8px;display:flex;position:fixed}.selection-toolbar .bubble-btn{font-weight:500}.doc-margin{flex:0 0 var(--margin-width);align-self:stretch;margin-right:12px;position:relative}.doc-margin .anno-card{transition:transform .15s;position:absolute;top:0;left:0;right:0}.anno-card{background:var(--bg);border:1px solid var(--border);border-left:4px solid var(--anno-color,var(--border));border-radius:var(--radius);flex-direction:column;gap:6px;padding:10px 12px;font-size:14px;display:flex}.anno-card.is-active{box-shadow:var(--shadow);border-color:#0000;border-left-color:var(--anno-color);z-index:1}.anno-card-yellow{--anno-color:#ffd400}.anno-card-green{--anno-color:#3cbe5a}.anno-card-blue{--anno-color:#2d8cff}.anno-card-pink{--anno-color:#ff4696}.anno-quote{-webkit-line-clamp:3;text-align:left;color:var(--text-muted);-webkit-box-orient:vertical;font-size:13px;display:-webkit-box;overflow:hidden}.anno-quote:hover{color:var(--text)}.anno-orphan{color:var(--danger);margin:0;font-size:12px}.anno-comment{resize:none;width:100%;min-height:24px;font:inherit;color:var(--text);background:0 0;border:none;outline:none;padding:0;overflow:hidden}.anno-comment::placeholder{color:var(--text-faint)}.anno-actions{align-items:center;gap:6px;display:none}.anno-card.is-active .anno-actions{display:flex}.anno-drawer{z-index:35;width:min(360px,100%);padding-bottom:var(--command-bar-space);background:var(--bg-sidebar);box-shadow:var(--shadow);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;right:0}.anno-drawer-header{border-bottom:1px solid var(--border);align-items:center;height:44px;padding:0 8px 0 16px;font-size:14px;display:flex}.anno-drawer-list{flex-direction:column;flex:1;gap:8px;padding:12px;display:flex;overflow-y:auto}.anno-empty{text-align:center;padding:24px 8px;font-size:14px}@media (pointer:coarse){.anno-actions{display:flex}}@media (width<=768px){.sidebar{z-index:30;box-shadow:var(--shadow);position:fixed;top:0;bottom:0;left:0}.app.sidebar-open .sidebar-backdrop{z-index:25;background:#0003;display:block;position:fixed;inset:0}.tree-actions{display:flex}.page-body{padding:20px 16px 40vh}.html-doc-body{padding:8px 16px}.zoom-controls{display:none}.pdf-doc{gap:8px;padding:0 8px}.anno-drawer{border-radius:12px 12px 0 0;width:100%;max-height:55vh;top:auto}.page-title{font-size:32px}.page-header{padding-left:6px}}.fit-body{padding-top:24px}.fit-h1{margin:0 0 4px;font-size:32px;line-height:1.2}.fit-sub{margin:0 0 20px}.fit-h2{margin:28px 0 10px;font-size:18px}.fit-h2-sub{font-size:14px;font-weight:400}.fit-error{color:var(--danger)}.fit-empty{text-align:center;max-width:480px;margin:10vh auto 0}.fit-card{border:1px solid var(--border);border-radius:10px;margin:16px 0;padding:16px}.fit-next{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.fit-next .btn{margin-top:8px}.fit-next-label{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);font-size:12px;font-weight:600}.fit-next-title{font-size:22px;font-weight:700}.fit-note{border-radius:var(--radius);background:var(--highlight);margin:8px 0;padding:8px 12px;font-size:13px}.fit-list{margin:0;padding:0;list-style:none}.fit-list-row{border-radius:var(--radius);justify-content:space-between;gap:12px;padding:8px 10px;font-size:14px;text-decoration:none;display:flex}.fit-list-row:hover{background:var(--bg-hover)}.fit-week{align-items:baseline;gap:12px;padding:4px 0;display:flex}.fit-week-label{color:var(--text-muted);flex:0 0 76px;font-size:13px}.fit-deload{color:var(--text-faint);font-size:11px;display:block}.fit-days{flex-wrap:wrap;gap:6px;display:flex}.fit-day{border:1px solid var(--border);white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:13px}.fit-day:hover{background:var(--bg-hover)}.fit-day.done{background:var(--success-bg);color:var(--success);border-color:#0000}.fit-day.next{border-color:var(--accent);color:var(--accent);font-weight:600}.fit-unit{justify-content:center;min-width:40px}.fit-meta{flex-wrap:wrap;align-items:center;gap:10px;font-size:14px;display:flex}.fit-date{font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:2px 6px;font-size:14px}.fit-badge{background:var(--success-bg);color:var(--success);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600}.fit-ex-head{align-items:center;gap:8px;display:flex}.fit-ex-name{flex:1;margin:0;font-size:17px;line-height:1.3}.fit-superset{background:var(--bg-active);border-radius:4px;padding:1px 6px;font-size:12px;font-weight:600}.fit-video{color:var(--accent);white-space:nowrap;font-size:13px;text-decoration:none}.fit-rx{color:var(--text-muted);flex-wrap:wrap;gap:4px 14px;margin:6px 0;font-size:13px;display:flex}.fit-variant{font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);max-width:100%;color:var(--text);margin:4px 0;padding:4px 6px;font-size:13px}.fit-exercise-pick{margin:8px 0 16px;font-size:15px}.fit-ex-notes{color:var(--text-muted);margin:4px 0;font-size:13px}.fit-ex-notes summary{cursor:pointer}.fit-ex-notes p{white-space:pre-line;margin:4px 0 0}.fit-last,.fit-hint,.fit-warmup{margin:4px 0;font-size:13px}.fit-hint{color:var(--accent)}.fit-hint.add-weight{color:var(--success);font-weight:600}.fit-sets{border-collapse:collapse;width:100%;margin-top:10px;font-size:14px}.fit-sets th{text-align:left;color:var(--text-faint);padding:0 4px 4px;font-size:12px;font-weight:500}.fit-sets td{padding:3px 4px}.fit-sets tr.done td{background:var(--success-bg)}.fit-sets tr.done td:first-child{border-radius:var(--radius) 0 0 var(--radius)}.fit-sets tr.done td:last-child{border-radius:0 var(--radius) var(--radius) 0}.fit-num{width:100%;min-width:48px;max-width:84px;font:inherit;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);padding:6px;font-size:15px}.fit-num::placeholder{color:var(--text-faint)}.fit-check{border:1px solid var(--border);width:36px;height:36px;color:var(--text-faint);border-radius:50%;font-weight:700}.fit-check.on{background:var(--success);border-color:var(--success);color:#fff}.fit-notes{flex-direction:column;gap:4px;margin-top:24px;font-size:13px;display:flex}.fit-notes textarea{font:inherit;border:1px solid var(--border);border-radius:var(--radius);resize:vertical;padding:8px;font-size:14px}.fit-actions{justify-content:flex-end;margin-top:16px;display:flex}.rest-timer{left:50%;bottom:var(--command-bar-space);z-index:20;background:var(--bg);width:min(440px,100vw - 32px);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex;position:fixed;overflow:hidden;transform:translate(-50%)}.rest-progress{background:var(--accent);transform-origin:0;width:100%;height:3px;position:absolute;bottom:0;left:0}.rest-timer.over .rest-progress{background:var(--success)}.rest-label{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.rest-time{font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.fit-stats{grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px;display:grid}.fit-stat{border:1px solid var(--border);border-radius:10px;padding:10px 12px}.fit-stat-value{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.fit-stat-label{color:var(--text-muted);font-size:12px}.fit-chart{margin:0 0 16px;position:relative}.fit-chart figcaption{margin-bottom:4px;font-size:13px}.fit-chart svg{display:block;overflow:visible}.chart-grid{stroke:var(--border);stroke-width:1px}.chart-tick{fill:var(--text-faint);font-size:11px}.chart-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round}.chart-dot{fill:var(--accent);stroke:var(--bg);stroke-width:2px}.chart-crosshair{stroke:var(--text-faint);stroke-dasharray:3 3}.chart-tooltip{border-radius:var(--radius);background:var(--bg);box-shadow:var(--shadow);white-space:nowrap;pointer-events:none;flex-direction:column;padding:6px 10px;font-size:12px;display:flex;position:absolute;transform:translate(-50%,-100%)}.fit-history{border-collapse:collapse;width:100%;font-size:14px}.fit-history th{text-align:left;color:var(--text-faint);border-bottom:1px solid var(--border);padding:4px 6px;font-size:12px;font-weight:500}.fit-history td{border-bottom:1px solid var(--border);vertical-align:top;padding:6px}.fit-edit-link{margin-top:16px;font-size:13px}.fit-edit-link a{color:var(--text-muted)}.ed-title{width:100%;font:inherit;color:var(--text);background:0 0;border:none;outline:none;margin:0 0 12px;padding:0;font-size:32px;font-weight:700}.ed-message{cursor:pointer}.ed-phase{border-top:2px solid var(--border);margin:20px 0 28px;padding-top:12px}.ed-row{align-items:center;gap:8px;min-height:32px;display:flex}.ed-kicker{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);flex:1;font-size:12px;font-weight:600}.ed-tools{flex-shrink:0;align-items:center;gap:2px;display:flex}.ed-tools .icon-btn:disabled{opacity:.3;cursor:default}.ed-copy{padding:2px 8px;font-size:12px}.ed-toggle{text-align:left;flex:1;align-items:center;gap:8px;min-width:0;padding:4px 0;font-size:14px;display:flex}.ed-toggle .tree-chevron{flex-shrink:0}.ed-summary{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-size:13px;overflow:hidden}.ed-week{border-bottom:1px solid var(--border)}.ed-body{padding:4px 0 12px 22px}.ed-day{border:1px solid var(--border);border-radius:8px;margin:6px 0;padding:2px 10px;scroll-margin-top:56px}.ed-day.open{padding-bottom:10px}.ed-day .ed-body{padding-left:0}.ed-exercise{background:var(--bg-sidebar);border-radius:8px;margin:10px 0;padding:8px 10px 10px}.ed-grid{flex-wrap:wrap;gap:8px;margin:4px 0 8px;display:flex}.ed-field{min-width:0;color:var(--text-muted);flex-direction:column;flex:160px;gap:2px;font-size:12px;display:flex}.ed-field.wide{flex-basis:100%}.ed-field.small{flex:84px}.ed-field.tiny{flex:0 0 64px}.ed-field input,.ed-field textarea,.ed-sub input{width:100%;font:inherit;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);padding:5px 7px;font-size:14px}.ed-field textarea{resize:vertical}.ed-exercise .ed-field.wide:first-child input{font-weight:600}.ed-subs{flex-direction:column;gap:4px;display:flex}.ed-subs-label{color:var(--text-muted);font-size:12px}.ed-sub{align-items:center;gap:6px;display:flex}.ed-add{margin-top:8px}.ed-add-sub{align-self:flex-start;padding:2px 6px;font-size:13px}@media (width<=768px){.fit-stats{grid-template-columns:repeat(2,1fr)}.fit-card{padding:12px}.fit-week{flex-direction:column;gap:4px}.fit-week-label{flex:none}.fit-deload{display:inline}.ed-body{padding-left:0}.ed-day>.ed-row,.ed-sub{flex-wrap:wrap}.ed-sub input{flex:140px}}.tag-gray{--tag-bg:#ebebea;--tag-fg:#4a4844}.tag-red{--tag-bg:#fbe4e4;--tag-fg:#9f2f2d}.tag-orange{--tag-bg:#fbecdd;--tag-fg:#8f4a12}.tag-yellow{--tag-bg:#fbf3db;--tag-fg:#7a5b0b}.tag-green{--tag-bg:#ddedea;--tag-fg:#2b6a48}.tag-blue{--tag-bg:#ddebf1;--tag-fg:#1f5a85}.tag-purple{--tag-bg:#eae4f2;--tag-fg:#5f3d8c}.tag-pink{--tag-bg:#f4dfeb;--tag-fg:#8a2e5d}.entity-tags{margin:4px 0 12px}.page-tags{margin-top:0}.doc-tags{border-bottom:1px solid var(--border);margin:0;padding:4px 14px 6px}.task-tags{margin:0}.anno-tags{margin:6px 0 4px}.tag-field{flex-wrap:wrap;align-items:center;gap:4px;min-height:26px;display:flex}.tag-chip{background:var(--tag-bg);max-width:100%;color:var(--tag-fg);white-space:nowrap;border-radius:999px;align-items:center;font-size:12px;line-height:20px;display:inline-flex}.tag-chip-name{text-overflow:ellipsis;color:inherit;padding:0 8px;text-decoration:none;overflow:hidden}a.tag-chip-name:hover{text-decoration:underline}.tag-chip-remove{color:inherit;opacity:.6;border-radius:999px;margin:0 4px 0 -4px;padding:0 3px;font-size:13px;line-height:16px}.tag-chip-remove:hover{opacity:1;background:#00000014}.tag-add-btn{color:var(--text-faint);border-radius:999px;padding:0 8px;font-size:12px;line-height:20px}.tag-add-btn:hover{background:var(--bg-hover);color:var(--text-muted)}.tag-add{position:relative}.tag-input{border:1px solid var(--border);width:140px;font:inherit;background:var(--bg);color:var(--text);border-radius:999px;outline:none;padding:1px 8px;font-size:12px;line-height:18px}.tag-input:focus{border-color:var(--accent)}.tag-suggest{z-index:40;border-radius:var(--radius);background:var(--bg);min-width:200px;max-width:min(280px,100vw - 32px);box-shadow:var(--shadow);margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0}.tag-suggest button{text-align:left;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;align-items:center;gap:6px;width:100%;padding:4px 8px;font-size:13px;display:flex;overflow:hidden}.tag-suggest button.active,.tag-suggest button:hover{background:var(--bg-hover)}.tag-dot{background:var(--tag-fg);border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.tags-body{padding-top:24px}.tags-cloud{flex-wrap:wrap;gap:6px;margin:12px 0;display:flex}.tags-cloud-item{background:var(--tag-bg);color:var(--tag-fg);border-radius:999px;align-items:center;font-size:13px;display:inline-flex;box-shadow:inset 0 0 0 1px #0000}.tags-cloud-item.active{box-shadow:inset 0 0 0 2px var(--tag-fg);font-weight:600}.tags-cloud-name{color:inherit;padding:3px 4px 3px 10px}.tags-cloud-count{opacity:.6;font-weight:400}.tags-cloud-more{color:inherit;opacity:.5;padding:3px 8px 3px 4px}.tags-cloud-more:hover{opacity:1}.tags-filters{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;display:flex}.tags-types{flex-wrap:wrap;gap:4px;display:flex}.tags-type{border:1px solid var(--border);color:var(--text-muted);border-radius:999px;padding:3px 10px;font-size:13px}.tags-type.active{border-color:var(--accent);color:var(--accent);background:#2383e214}.tags-results{margin:0;padding:0;list-style:none}.tags-result{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px 12px;padding:8px 6px;display:flex}.tags-result-link{flex:260px;align-items:baseline;gap:8px;min-width:0;text-decoration:none;display:flex}.tags-result-link:hover .tags-result-title{text-decoration:underline}.tags-result-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tags-result-type{flex-shrink:0;font-size:12px}.tags-result-tags{flex-wrap:wrap;gap:4px;display:flex}.log-body{padding-top:24px}.log-body .tags-cloud-name{padding:3px 10px}.log-day-nav{align-items:center;gap:4px;display:flex}.log-day-title{border-radius:var(--radius);cursor:pointer;padding:0 6px;font-size:28px;font-weight:700;position:relative}.log-day-title:hover{background:var(--bg-hover)}.log-day-title input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.log-day-title input::-webkit-calendar-picker-indicator{cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.log-day-nav .btn{margin-left:8px}.log-day-date{margin:0 0 16px 46px;font-size:14px}.log-empty{margin:24px 0}.log-group{margin-top:28px}.log-group-day{margin:0 0 4px;font-size:15px;font-weight:600}.log-group-day a{text-decoration:none}.log-group-day a:hover{text-decoration:underline}.log-list{flex-direction:column;display:flex}.log-block{border-bottom:1px solid var(--border);padding:10px 0 6px;scroll-margin-top:60px}.log-block.focused{background:var(--highlight);border-radius:var(--radius);padding-left:8px;padding-right:8px;animation:2.5s ease-out 1.5s forwards log-focus-fade}@keyframes log-focus-fade{to{background:0 0}}.log-block-head{flex-wrap:wrap;align-items:center;gap:6px;min-height:28px;display:flex}.log-block-head .tag-field{margin:0}.log-time{font-variant-numeric:tabular-nums;color:var(--text-muted);border-radius:4px;margin-left:-6px;padding:2px 6px;font-size:13px;font-weight:600}.log-time:hover{background:var(--bg-hover);color:var(--text)}.log-time-input{font:inherit;border:1px solid var(--border);border-radius:4px;max-width:100%;padding:2px 6px;font-size:13px}.log-block-body,.log-block:not(.editing) .log-block-body .ProseMirror{cursor:text}.log-block-body .editor-content{min-height:0;padding:2px 0 4px}.log-block.editing .log-block-body{box-shadow:inset 2px 0 0 var(--accent);margin-left:-12px;padding-left:10px}.log-done{padding:2px 10px;font-size:13px}.log-composer{border:1px solid var(--border);border-radius:10px;margin-top:20px;padding:10px 12px;box-shadow:0 1px 3px #0f0f0f0f}.log-composer-editor .editor-content{min-height:3em}.log-composer-tags{flex-direction:column;gap:6px;margin-top:6px;display:flex}.log-composer-tags .tag-field{margin:0}.log-quick-tags{flex-wrap:wrap;gap:6px;display:flex}.log-quick-tag{color:var(--tag-fg);box-shadow:inset 0 0 0 1px var(--tag-bg), inset 0 0 0 2px var(--tag-bg);background:0 0;border-radius:999px;padding:2px 10px;font-size:13px}.log-quick-tag:hover{background:var(--tag-bg)}.log-composer-actions{align-items:center;gap:8px;margin-top:10px;display:flex}.log-composer-actions .btn-primary:disabled{opacity:.5;cursor:default}.log-shortcut{font-size:12px}@media (width<=768px){.log-day-title{font-size:22px}.log-day-date{margin-left:40px}.log-shortcut{display:none}.log-quick-tag{padding:5px 12px}}.web-clip{margin:6px 0}.ProseMirror-focused .web-clip.is-selected .clip-card{outline:2px solid var(--accent)}.clip-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);padding:10px 12px}.clip-quote{border-left:3px solid var(--text-faint);color:var(--text);margin:0 0 8px;padding:0 0 0 12px}.clip-passage{overflow-wrap:anywhere}.clip-passage>:first-child{margin-top:0}.clip-passage>:last-child{margin-bottom:0}.clip-passage img{border-radius:4px;max-width:100%;height:auto}.clip-passage table{border-collapse:collapse;display:block;overflow-x:auto}.clip-passage td,.clip-passage th{border:1px solid var(--border);padding:4px 8px}.clip-passage pre{background:var(--code-bg);border-radius:4px;padding:8px;overflow-x:auto}.clip-card .clip-passage{max-height:16em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 80%,#0000);mask-image:linear-gradient(#000 80%,#0000)}.clip-source{align-items:baseline;gap:8px;min-width:0;font-size:13px;display:flex}.clip-host{color:var(--text-muted);flex-shrink:0}.clip-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:500;overflow:hidden}.clip-links{flex-wrap:wrap;gap:12px;margin-top:4px;font-size:13px;display:flex}.clip-links a{color:var(--accent);text-decoration:none}.clip-links a:hover{text-decoration:underline}.clip-body{padding-top:32px}.clip-page-title{margin:0 0 4px;font-size:30px;line-height:1.25}.clip-meta{margin:0 0 8px;font-size:14px}.clip-actions{flex-wrap:wrap;gap:8px;margin:8px 0 20px;display:flex}.clip-actions a.btn{text-decoration:none}.clip-quote-full{font-size:17px;line-height:1.6}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sidebar-badge{background:var(--accent);color:#fff;text-align:center;font-variant-numeric:tabular-nums;border-radius:10px;min-width:20px;margin-left:auto;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.cloze{background:var(--cloze-bg);border-bottom:1.5px solid var(--cloze-border);border-radius:3px;padding:0 1px}.cloze[data-reveal=hidden]{color:var(--accent);padding:0 6px;font-weight:600}.cloze[data-reveal=answer]{background:var(--highlight);border-bottom-color:#e8b45a;font-weight:600}.editor-content .flashcard,.review-side .flashcard{border:1px solid var(--border);border-left:3px solid var(--cloze-border);border-radius:var(--radius);margin:10px 0;padding:6px 12px 8px}.editor-content .flashcard.is-selected{outline:2px solid var(--accent)}.flashcard-bar{color:var(--text-faint);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;margin-bottom:2px;font-size:11px;display:flex}.flashcard-label{text-transform:uppercase;letter-spacing:.04em;cursor:grab;font-weight:600}.flashcard-direction{color:var(--text-muted);border-radius:4px;padding:1px 6px}button.flashcard-direction:hover{background:var(--bg-hover)}.flashcard-front,.flashcard-back{padding-left:24px;position:relative}.flashcard-front:before,.flashcard-back:before{color:var(--accent);font-size:12px;font-weight:700;line-height:1.5rem;position:absolute;top:0;left:0}.flashcard-front:before{content:"Q"}.flashcard-back:before{content:"A";color:var(--success)}.flashcard-front{min-height:1.5em;font-weight:500}.flashcard-back{color:var(--text);margin-top:2px}.flashcard-back>*{margin:0}.flashcard-back>*+*{margin-top:4px}.fc-body{max-width:900px}.fc-tabs{gap:2px;display:flex}.fc-tabs a{border-radius:var(--radius);color:var(--text-muted);padding:4px 10px;font-size:14px;text-decoration:none}.fc-tabs a:hover{background:var(--bg-hover)}.fc-tabs a.active{background:var(--bg-active);color:var(--text)}.fc-hero{justify-content:space-between;align-items:center;gap:16px;margin:8px 0 20px;display:flex}.fc-hero-value{font-size:44px;font-weight:700;line-height:1.1}.fc-hero-label{color:var(--text-muted);font-size:14px}.fc-study{white-space:nowrap;padding:10px 22px;font-size:16px;text-decoration:none}.fc-study.is-quiet{background:var(--bg-hover);color:var(--text)}.fc-help{border:1px solid var(--border);border-radius:10px;padding:4px 18px 8px}.fc-help h2{font-size:17px}.fc-help li{margin-bottom:6px}.fc-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 28px;display:grid}.fc-footnote{font-size:13px}.viz{min-width:0;margin:0 0 22px;position:relative}.viz figcaption{margin-bottom:6px;font-size:14px;font-weight:600}.viz-plot{position:relative}.viz svg{display:block;overflow:visible}.viz-grid{stroke:var(--viz-grid);stroke-width:1px}.viz-axis{stroke:var(--viz-axis);stroke-width:1px}.viz-target,.viz-crosshair{stroke:var(--text-faint);stroke-width:1px}.viz-bar{outline:none}.viz-bar.is-hover path,.viz-bar:focus-visible path{opacity:.75}.viz-cell{outline:none}.viz-cell.is-hover{stroke:var(--text);stroke-width:1.5px}.viz-legend{color:var(--text-muted);flex-wrap:wrap;gap:4px 14px;margin:0 0 6px;padding:0;font-size:12px;list-style:none;display:flex}.viz-legend li{align-items:center;gap:5px;display:flex}.viz-legend strong{color:var(--text);font-variant-numeric:tabular-nums}.viz-key{border-radius:2px;width:10px;height:10px;display:inline-block}.viz-key-line{border-radius:1px;width:12px;height:2px;display:inline-block}.viz-tooltip{z-index:5;gap:1px}.viz-tooltip-row{align-items:center;gap:6px;display:flex}.viz-tooltip strong{font-variant-numeric:tabular-nums}.viz-scale{color:var(--text-faint);justify-content:flex-end;align-items:center;gap:3px;margin-top:4px;font-size:11px;display:flex}.viz-scale .viz-key{width:11px;height:11px}.viz-parts{gap:2px;height:14px;margin-bottom:8px;display:flex}.viz-parts span{min-width:3px}.viz-parts span:first-child{border-radius:4px 0 0 4px}.viz-parts span:last-child{border-radius:0 4px 4px 0}.viz-parts span:only-child{border-radius:4px}.viz-parts-empty{background:var(--viz-seq-0);flex:1}.viz-table{margin-top:4px;font-size:12px}.viz-table summary{color:var(--text-faint);cursor:pointer;width:max-content}.review-body{max-width:720px}.review-counts{font-variant-numeric:tabular-nums;gap:8px;margin-right:8px;font-size:14px;font-weight:600;display:flex}.review-count-new{color:var(--accent)}.review-count-learning{color:var(--in-progress)}.review-count-review{color:var(--success)}.review-card{margin-top:12px}.review-source{color:var(--text-muted);margin-bottom:18px;font-size:13px}.review-source a{color:inherit}.review-badge{background:var(--bg-hover);border-radius:4px;margin-left:8px;padding:1px 6px;font-size:11px}.review-side{min-height:2em;font-size:20px;line-height:1.6}.review-side p{margin:0 0 8px}.review-divider{border:none;border-top:1px solid var(--border);margin:18px 0}.review-actions{justify-content:center;gap:10px;margin-top:36px;display:flex}.review-show{min-width:220px;padding:10px 20px;font-size:16px}.review-rate{flex-direction:column;flex:1;align-items:center;gap:2px;max-width:140px;padding:8px 6px;font-weight:600;display:flex}.review-rate-when{color:var(--text-muted);min-height:18px;font-size:12px;font-weight:400}.review-rate-1{color:var(--danger)}.review-rate-3{color:var(--success)}.review-rate-4{color:var(--accent)}.review-actions kbd,.fc-help kbd{font-family:var(--mono);color:var(--text-faint);font-size:10px;font-weight:400}.review-show kbd{color:#ffffffbf;margin-left:8px}.review-done{text-align:center;margin-top:60px}.review-error{color:var(--danger)}.fc-search{border:1px solid var(--border);border-radius:var(--radius);width:100%;font:inherit;margin-bottom:12px;padding:8px 10px}.fc-cards{margin:0;padding:0;list-style:none}.fc-cards li{border-bottom:1px solid var(--border);align-items:flex-start;gap:14px;padding:10px 0;display:flex}.fc-cards li.is-suspended .fc-card-text{opacity:.5}.fc-card-text{flex:1;min-width:0}.fc-card-prompt{font-weight:500}.fc-card-answer{color:var(--text-muted);font-size:14px}.fc-card-meta{color:var(--text-faint);margin-top:2px;font-size:12px}.fc-card-meta a{color:inherit}.fc-card-memory{color:var(--text-muted);white-space:nowrap;font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-end;font-size:12px;display:flex}.fc-state{font-weight:600}.fc-state-new{color:var(--accent)}.fc-state-learning,.fc-state-relearning{color:var(--in-progress)}.fc-state-review{color:var(--success)}.fc-card-actions{flex-direction:column;gap:2px;display:flex}.fc-card-actions .btn{padding:2px 8px;font-size:12px}@media (width<=768px){.fc-grid{grid-template-columns:minmax(0,1fr)}.fc-hero-value{font-size:36px}.review-side{font-size:18px}.review-actions{gap:6px}.fc-cards li{flex-wrap:wrap;row-gap:4px}.fc-card-text{flex-basis:100%}.fc-card-memory{flex-direction:row;flex:1;align-items:center;gap:8px}.fc-card-actions{flex-direction:row}}.projects-body{width:100%;max-width:820px;margin:0 auto;padding:32px 48px 30vh}.projects-wide{max-width:1080px}.projects-hero h1{letter-spacing:-.01em;margin:0;font-size:32px;font-weight:700}.projects-hero p{margin:4px 0 0;font-size:14px}.overdue-text{color:var(--danger)}.projects-filter{margin:20px 0 16px}.segmented-count{color:var(--text-faint);font-variant-numeric:tabular-nums;margin-left:6px;font-size:11px}.projects-none{margin-top:8px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;display:grid}.project-card{border:1px solid var(--border);background:var(--bg);border-radius:12px;flex-direction:column;gap:12px;padding:16px 16px 14px;text-decoration:none;transition:box-shadow .15s,transform .15s,border-color .15s;display:flex;position:relative;overflow:hidden}.project-card:before{content:"";background:var(--tag-fg);opacity:.75;height:3px;position:absolute;inset:0 0 auto}a.project-card:hover{box-shadow:var(--shadow);border-color:#0000;transform:translateY(-1px)}.project-card.status-done,.project-card.status-paused{background:var(--bg-sidebar)}.project-card-head{align-items:flex-start;gap:12px;display:flex}.project-card-titles{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.project-card-name{text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:600;line-height:1.3;overflow:hidden}.project-card-desc{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;display:-webkit-box;overflow:hidden}.project-card-next{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:-4px;font-size:13px;overflow:hidden}.project-card-next strong{color:var(--text);font-weight:500}.project-card-foot{border-top:1px solid var(--border);color:var(--text-muted);align-items:center;gap:8px;padding-top:10px;font-size:12px;display:flex}.project-card-count{font-variant-numeric:tabular-nums}.project-card-new{border-style:dashed;border-color:var(--tag-fg)}.project-card-input{min-width:0;font:inherit;color:var(--text);background:0 0;border:none;outline:none;flex:1;align-self:center;font-size:16px;font-weight:600}.project-card-new-actions{justify-content:flex-end;gap:8px;display:flex}.stepper{gap:4px;height:6px;display:flex}.stepper.is-empty{background:repeating-linear-gradient(90deg, var(--bg-active) 0 6px, transparent 6px 10px);opacity:.6;border-radius:3px}.stepper-seg{background:var(--bg-active);border-radius:3px;flex:1;overflow:hidden}.stepper-fill{background:var(--tag-fg);border-radius:3px;height:100%;transition:width .3s;display:block}.projects-empty{text-align:center;max-width:440px;margin:8vh auto 0}.projects-empty-art{justify-content:center;margin-bottom:18px;display:flex}.projects-empty-art .project-icon{width:56px;height:56px;box-shadow:0 0 0 4px var(--bg);font-size:28px}.projects-empty-art .project-icon:first-child{transform:rotate(-8deg)translate(8px)}.projects-empty-art .project-icon:nth-child(2){z-index:1;position:relative;transform:translateY(-6px)}.projects-empty-art .project-icon:nth-child(3){transform:rotate(8deg)translate(-8px)}.projects-empty h2{margin:0 0 6px;font-size:20px}.projects-empty p{margin:0 0 18px;font-size:14px;line-height:1.6}.project-icon{background:var(--tag-bg);color:var(--tag-fg);-webkit-user-select:none;user-select:none;border-radius:28%;flex-shrink:0;justify-content:center;align-items:center;line-height:1;display:inline-flex}.project-icon.is-initial{font-weight:700}.ring{flex-shrink:0;justify-content:center;align-items:center;display:inline-flex;position:relative}.ring svg{position:absolute;inset:0}.ring-track{stroke:var(--bg-active)}.ring-done{stroke:var(--tag-fg,var(--complete));transition:stroke-dasharray .3s}.ring-active{stroke:var(--tag-fg,var(--in-progress));opacity:.3}.ring-label{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:11px;font-weight:600}.pill{background:var(--bg-hover);height:26px;color:var(--text);white-space:nowrap;border-radius:13px;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:500;display:inline-flex}.pill-button:hover,.pill-select:hover{background:var(--bg-active)}.pill-button.is-empty{color:var(--text-muted);font-weight:400}.pill-select{cursor:pointer;position:relative}.pill-select select{appearance:none;font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;outline:none;padding:0 2px 0 0}.status-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:8px;height:8px}.status-dot-paused{background:#d9a50d}.status-dot-done{background:var(--complete)}.pill-status-active{color:#1f5a85;background:#e3effc}.pill-status-paused{color:#7a5b0b;background:#fbf3db}.pill-status-done{background:var(--success-bg);color:var(--success)}.date-pill{align-items:center;display:inline-flex;position:relative}.date-pill .due-chip{color:inherit}.pill-clear{width:18px;height:18px;color:var(--text-faint);opacity:0;border-radius:50%;margin-left:-22px;font-size:13px;line-height:1}.date-pill:hover .pill-clear,.pill-clear:focus-visible{opacity:1}.date-pill:has(.pill-clear) .pill-button{padding-right:24px}.pill-clear:hover{background:var(--bg-active);color:var(--text)}.due-chip{color:var(--text-muted);white-space:nowrap;flex-shrink:0;align-items:center;gap:5px;font-size:12px;display:inline-flex}.due-chip-rel{color:var(--text-faint);margin-left:-3px}.due-chip.overdue,.due-chip.overdue .due-chip-rel{color:var(--danger)}.glyph{flex-shrink:0}.popover{z-index:30;background:var(--bg);box-shadow:var(--shadow);border-radius:8px;padding:8px;position:absolute;top:calc(100% + 4px);left:0}.swatches{grid-template-columns:repeat(4,28px);gap:6px;display:grid}.swatch{background:var(--tag-fg);width:28px;height:28px;box-shadow:inset 0 0 0 3px var(--tag-bg);border-radius:50%}.swatch:hover{transform:scale(1.08)}.swatch.is-current{box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--tag-fg)}.swatch-sm{width:12px;height:12px;box-shadow:none}.swatch-sm:hover{transform:none}.project-hero{background:linear-gradient(180deg, var(--tag-bg) 0%, var(--bg) 100%)}.project-hero-inner{padding-top:40px;padding-bottom:8px}.project-hero-icon{margin-bottom:14px;position:relative}.project-icon-btn{border-radius:22px;transition:transform .15s}.project-icon-btn:hover{transform:scale(1.04)}.project-icon-btn .project-icon{background:var(--bg);box-shadow:0 2px 8px #0f0f0f14,0 0 0 1px #0f0f0f0a}.inline-text{border-radius:var(--radius);width:calc(100% + 14px);font:inherit;color:var(--text);resize:none;field-sizing:content;background:0 0;border:1px solid #0000;outline:none;margin-left:-7px;padding:2px 6px;display:block}.inline-text:hover{background:var(--bg-hover)}.inline-text:focus{border-color:var(--border);background:var(--bg)}.inline-text::placeholder{color:var(--text-faint)}.project-title{letter-spacing:-.01em;font-size:36px;font-weight:700;line-height:1.2}.project-description{color:var(--text-muted);margin-top:6px;font-size:15px;line-height:1.55}.project-description:focus{color:var(--text)}.project-props{flex-wrap:wrap;align-items:center;gap:8px;margin:16px 0 8px;display:flex}.project-props .menu-anchor{display:inline-flex}.project-props .project-tags{margin:0}.project-stats{border:1px solid var(--border);background:var(--bg);border-radius:12px;grid-template-columns:1.6fr repeat(4,1fr);margin:8px 0 36px;display:grid}.stat{flex-direction:column;justify-content:center;min-width:0;padding:14px 16px;display:flex}.stat+.stat{border-left:1px solid var(--border)}.stat-main{flex-direction:row;justify-content:flex-start;align-items:center;gap:14px}.stat-value{font-variant-numeric:tabular-nums;font-size:22px;font-weight:700;line-height:1.2}.stat-main .stat-value{color:var(--tag-fg);font-size:28px}.stat-of{color:var(--text-faint);font-size:15px;font-weight:500}.stat-label{color:var(--text-muted);font-size:12px}.stat.is-overdue .stat-value,.stat.is-overdue .stat-label{color:var(--danger)}.section-head{align-items:baseline;gap:10px;margin-bottom:14px;display:flex}.section-head h2{margin:0;font-size:18px}.section-head .muted{font-size:13px}.timeline{--node:28px;margin:0;padding:0;list-style:none;position:relative}.timeline-item{gap:14px;padding-bottom:14px;display:flex;position:relative}.timeline-item:not(:last-child):before{content:"";top:var(--node);bottom:0;left:calc(var(--node) / 2 - 1px);background:var(--border);width:2px;position:absolute}.timeline-item.is-done:not(:last-child):before{background:var(--tag-fg);opacity:.5}.timeline-node{z-index:1;width:var(--node);height:var(--node);background:conic-gradient(var(--tag-fg) var(--share,0deg), var(--bg-active) 0);border-radius:50%;flex-shrink:0;margin-top:10px;position:relative}.timeline-node span{background:var(--bg);color:var(--text-muted);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex;position:absolute;inset:3px}.timeline-item.is-done .timeline-node span{background:var(--tag-fg);color:#fff;font-size:13px;inset:0}.timeline-item.is-current .timeline-node{box-shadow:0 0 0 4px var(--tag-bg)}.timeline-item.is-current .timeline-node span{color:var(--tag-fg)}.timeline-new .timeline-node{border:2px dashed var(--border);background:0 0}.timeline-new .timeline-node span{color:var(--text-faint);background:0 0;font-size:15px;font-weight:400;inset:0}.milestone-card{border:1px solid var(--border);background:var(--bg);border-radius:12px;flex:1;min-width:0;padding:8px 12px 8px 8px;transition:border-color .15s,box-shadow .15s}.timeline-item.is-current .milestone-card{border-color:var(--tag-fg);box-shadow:0 0 0 3px var(--tag-bg)}.timeline-item.is-done .milestone-card{background:var(--bg-sidebar)}.milestone-head{align-items:center;gap:6px;display:flex}.milestone-toggle{width:22px;height:22px;color:var(--text-faint);border-radius:4px;flex-shrink:0;font-size:16px;line-height:1;transition:transform .15s}.milestone-toggle:hover{background:var(--bg-hover);color:var(--text)}.milestone-toggle.is-open{transform:rotate(90deg)}.milestone-name{flex:1;width:auto;min-width:0;margin-left:0;font-size:16px;font-weight:600}.timeline-item.is-done .milestone-name{color:var(--text-muted)}.pill-current{background:var(--tag-bg);height:20px;color:var(--tag-fg);padding:0 8px;font-size:11px;font-weight:600}.milestone-count{color:var(--text-muted);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px}.milestone-sub{align-items:center;gap:12px;margin:4px 0 4px 28px;display:flex}.milestone-sub .progress{flex:1}.milestone-due .pill{background:0 0;height:22px;margin-left:-8px;padding:0 8px}.milestone-due .pill:hover{background:var(--bg-hover)}.progress{align-items:center;gap:10px;display:flex}.progress-track{background:var(--bg-active);border-radius:2px;flex:1;height:4px;display:flex;overflow:hidden}.progress-complete{background:var(--tag-fg,var(--complete));transition:width .3s}.progress-active{background:var(--tag-fg,var(--in-progress));opacity:.3;transition:width .3s}.progress-label{color:var(--text-muted);white-space:nowrap;flex-shrink:0;font-size:12px}.milestone-tasks{margin:6px 0 0;padding:0;list-style:none}.milestone-task,.milestone-add{border-radius:var(--radius);align-items:center;gap:10px;min-height:34px;margin-left:22px;padding:4px 6px;font-size:14px;display:flex}.milestone-task{cursor:pointer}.milestone-task+.milestone-task{box-shadow:0 -1px 0 var(--bg-hover)}.milestone-task:hover{background:var(--bg-hover);box-shadow:none}.milestone-task:hover+.milestone-task{box-shadow:none}.milestone-task-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.milestone-task.status-complete .milestone-task-title{color:var(--text-faint);text-decoration:line-through}.task-event-mark{background:var(--event-border);border-radius:50%;width:6px;height:6px;margin:0 6px 2px 0;display:inline-block}.milestone-task-meta{flex-shrink:0;gap:4px;display:flex}.chip{background:var(--bg-hover);color:var(--text-muted);white-space:nowrap;border-radius:10px;padding:1px 7px;font-size:11px}.chip-late{color:#9f2f2d;background:#fbe4e4}.milestone-task.status-complete .chip{opacity:.6}.project-tasks{margin-top:28px}.project-tasks .milestone-tasks{margin-top:0}.project-tasks .milestone-task,.project-tasks .milestone-add{margin-left:0}.milestone-add-icon{text-align:center;width:16px;color:var(--text-faint)}.milestone-add input{min-width:0;font:inherit;color:var(--text);background:0 0;border:none;outline:none;flex:1}.milestone-add input::placeholder,.milestone-new input::placeholder{color:var(--text-faint)}.milestone-add:focus-within{background:var(--bg-hover)}.milestone-new{flex:1;gap:8px;min-width:0;margin-top:6px;display:flex}.milestone-new input{border:1px dashed var(--border);min-width:0;height:34px;font:inherit;color:var(--text);background:0 0;border-radius:10px;outline:none;flex:1;padding:0 12px;font-size:14px}.milestone-new input:focus{border-style:solid;border-color:var(--tag-fg)}@media (width<=768px){.projects-body{padding:20px 16px 30vh}.project-hero-inner{padding-top:24px;padding-bottom:8px}.project-title{font-size:28px}.projects-hero h1{font-size:26px}.project-grid{grid-template-columns:minmax(0,1fr)}.project-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-main{border-bottom:1px solid var(--border);grid-column:1/-1}.stat+.stat{border-left:none}.stat:nth-child(odd):not(:first-child){border-left:1px solid var(--border)}.stat:nth-child(n+4){border-top:1px solid var(--border)}.stat:last-child:nth-child(2n){grid-column:1/-1}.timeline{--node:22px}.timeline-item{gap:8px}.milestone-sub,.milestone-task,.milestone-add{margin-left:0}.due-chip-rel{display:none}.projects-filter{width:100%;overflow-x:auto}}.entity-link button{color:var(--text);text-decoration:underline;-webkit-text-decoration-color:var(--text-faint);text-decoration-color:var(--text-faint);text-underline-offset:3px;font:inherit;line-height:inherit;border-radius:4px;padding:0 3px;display:inline}.entity-link button:hover{background:var(--bg-hover);-webkit-text-decoration-color:var(--text-muted);text-decoration-color:var(--text-muted)}.entity-link.is-selected button{background:#2383e224}.entity-link-icon{margin-right:3px;text-decoration:none;display:inline-block}.entity-link-title{font-weight:500}.entity-link.missing .entity-link-title{color:var(--text-faint);text-decoration:line-through}.page-icon-row{align-items:flex-end;min-height:32px;margin-bottom:4px;display:flex;position:relative}.page-icon{border-radius:var(--radius);padding:2px;font-size:64px;line-height:1.1}.page-icon:hover{background:var(--bg-hover)}.page-add-icon{opacity:0;font-size:13px;transition:opacity .1s}.page-body:hover .page-add-icon,.page-add-icon:focus-visible{opacity:1}.crumb-icon{margin-right:4px}.icon-picker{z-index:30;background:var(--bg);width:min(360px,100vw - 32px);box-shadow:var(--shadow);border-radius:8px;padding:8px;position:absolute;top:100%;left:0}.icon-picker-bar{gap:4px;margin-bottom:6px;display:flex}.icon-picker-bar input{border:1px solid var(--border);border-radius:var(--radius);min-width:0;font:inherit;flex:1;padding:5px 8px;font-size:13px}.icon-picker-grid{grid-template-columns:repeat(auto-fill,minmax(36px,1fr));max-height:240px;display:grid;overflow-y:auto}.icon-picker-item{border-radius:6px;height:36px;font-size:22px}.icon-picker-item:hover,.icon-picker-item.is-current{background:var(--bg-hover)}.icon-picker-empty{grid-column:1/-1;padding:8px;font-size:13px}.doc-name{font:inherit;cursor:text;border-radius:4px}.doc-name:hover{background:var(--bg-hover)}.doc-name-input{border:1px solid var(--accent);min-width:120px;font:inherit;color:var(--text);border-radius:4px;outline:none}@media (width<=768px){.page-icon{font-size:48px}.page-add-icon{opacity:1}}.command-bar{z-index:45;pointer-events:none;justify-content:center;padding:0 16px;display:flex;position:fixed;bottom:14px;left:0;right:0}.app.sidebar-open .command-bar{left:var(--sidebar-width)}.command-bar-inner{pointer-events:auto;width:100%;max-width:680px;position:relative}.command-input-row{background:var(--bg);height:44px;box-shadow:var(--shadow);cursor:text;border-radius:12px;align-items:center;gap:8px;padding:0 10px 0 14px;display:flex}.command-bar.open .command-input-row{box-shadow:var(--shadow), 0 0 0 2px #2383e259}.command-input-icon{color:var(--accent);font-size:15px}.command-context,.command-badge{background:var(--bg-hover);color:var(--text-muted);border-radius:999px;flex-shrink:0;padding:1px 8px;font-size:12px}.command-badge{background:var(--event-bg);color:var(--accent)}.command-input{min-width:0;font:inherit;color:var(--text);background:0 0;border:none;outline:none;flex:1;font-size:15px}.command-input::placeholder{color:var(--text-faint)}.command-bar kbd{font-family:var(--font);border:1px solid var(--border);color:var(--text-muted);background:var(--bg);border-radius:4px;padding:1px 5px;font-size:11px}.command-panel{background:var(--bg);max-height:min(60vh,520px);box-shadow:var(--shadow);border-radius:12px;font-size:14px;position:absolute;bottom:calc(100% + 8px);left:0;right:0;overflow-y:auto}.command-items{margin:0;padding:6px;list-style:none}.command-item{border-radius:var(--radius);cursor:pointer;align-items:center;gap:10px;padding:7px 10px;display:flex}.command-item.selected{background:var(--bg-hover)}.command-item-icon{text-align:center;width:18px;color:var(--text-muted);flex-shrink:0}.command-item-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.command-item-type{color:var(--text-faint);flex-shrink:0;font-size:12px}.command-answer{border-bottom:1px solid var(--border);padding:12px 14px}.command-answer:last-child{border-bottom:none}.command-reply{white-space:pre-wrap;margin:0 0 8px}.command-thinking{color:var(--text-muted)}.command-error{color:var(--danger)}.command-ops{flex-direction:column;gap:4px;margin:0 0 10px;padding:0;list-style:none;display:flex}.command-op{border-radius:var(--radius);background:var(--bg-sidebar);flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:6px 10px;display:flex}.command-op-verb{text-transform:uppercase;letter-spacing:.03em;color:var(--accent);font-size:11px;font-weight:600}.command-op.op-delete_task .command-op-verb{color:var(--danger)}.command-op-title{font-weight:500}.command-op-detail{color:var(--text-muted);flex-basis:100%;font-size:13px}.command-ops-actions{align-items:center;gap:8px;display:flex}.command-ops-actions .btn-primary kbd{color:#fff;background:0 0;border-color:#ffffff80}.command-hint{font-size:12px}.command-notice{background:var(--text);color:var(--bg);box-shadow:var(--shadow);border-radius:10px;padding:8px 14px;font-size:13px;position:absolute;bottom:calc(100% + 8px);left:0;right:0}@media (width<=768px){.command-bar,.app.sidebar-open .command-bar{z-index:24;padding:0 12px;bottom:10px;left:0}.command-shortcut,.command-hint{display:none}.command-input{font-size:16px}}.project-work-log{margin-top:28px}.project-work-log .section-head{align-items:center}.work-log-filter{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);max-width:50%;color:var(--text);font:inherit;margin-left:auto;padding:3px 6px;font-size:13px}.work-log-list{padding:4px}.work-log-row{color:inherit;border-radius:8px;grid-template-columns:96px 1fr;gap:2px 12px;padding:8px 10px;text-decoration:none;display:grid}.work-log-row+.work-log-row{box-shadow:0 -1px 0 var(--bg-hover)}.work-log-row:hover{background:var(--bg-hover);box-shadow:none}.work-log-day{white-space:nowrap;font-size:13px;font-weight:600}.work-log-row.is-today .work-log-day{color:var(--tag-fg)}.work-log-excerpt{-webkit-line-clamp:2;white-space:pre-line;-webkit-box-orient:vertical;font-size:14px;display:-webkit-box;overflow:hidden}.work-log-tasks{flex-wrap:wrap;grid-column:2;gap:4px;display:flex}.work-log-empty{padding:10px;font-size:14px}.work-log-more{margin:4px auto 2px;font-size:13px;display:block}.work-log-nav{align-items:center;gap:2px;margin-left:8px;display:flex}.work-log-head{align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.work-log-title{flex:1;margin:0;font-size:40px;line-height:1.2}@media (width<=720px){.work-log-title{font-size:30px}.work-log-row{grid-template-columns:1fr}.work-log-tasks{grid-column:1}}.task-section{border-left:3px solid var(--tag-fg,var(--accent));background:var(--tag-bg,var(--bg-hover));background:color-mix(in srgb, var(--tag-bg,var(--bg-hover)) 45%, transparent);border-radius:0 8px 8px 0;margin:10px 0;padding:4px 10px 2px 12px}.task-section-head{-webkit-user-select:none;user-select:none;flex-wrap:wrap;align-items:center;gap:4px;padding:2px 0;font-size:12px;display:flex}.task-section-label{color:var(--tag-fg,var(--accent))}.task-section-chip{background:var(--bg);box-shadow:0 0 0 1px var(--border);border-radius:10px;align-items:center;display:inline-flex}.task-section-chip-name,.task-section-chip-remove,.task-section-add,.task-section-unwrap{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}.task-section-chip-name{padding:1px 4px 1px 8px;font-weight:500}.task-section-chip-name:disabled{cursor:default;color:var(--text-faint);text-decoration:line-through}.task-section-chip.status-complete .task-section-chip-name{color:var(--complete)}.task-section-chip.status-in_progress .task-section-chip-name{color:var(--in-progress)}.task-section-chip-remove{color:var(--text-faint);padding:1px 7px 1px 2px}.task-section-chip-remove:hover{color:var(--danger)}.task-section-add{color:var(--text-muted);border-radius:10px;padding:1px 8px}.task-section-add:hover,.task-section-unwrap:hover{background:var(--bg-hover);color:var(--text)}.task-section-unwrap{border-radius:var(--radius);color:var(--text-faint);opacity:0;margin-left:auto;padding:1px 6px}.task-section:hover .task-section-unwrap,.task-section-unwrap:focus-visible{opacity:1}@media (hover:none){.task-section-unwrap{opacity:1}}.task-section-body>:first-child{margin-top:2px}.task-picker{width:280px;max-width:calc(100vw - 32px);font-size:14px}.task-picker input{border:1px solid var(--border);border-radius:var(--radius);width:100%;font:inherit;margin-bottom:6px;padding:5px 8px}.task-picker ul{max-height:260px;margin:0;padding:0;list-style:none;overflow-y:auto}.task-picker-item{border-radius:var(--radius);width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:flex-start;gap:8px;padding:5px 6px;display:flex}.task-picker-item:hover{background:var(--bg-hover)}.task-picker-item.status-complete .task-picker-title{color:var(--text-muted);text-decoration:line-through}.task-picker-check{width:14px;color:var(--accent);flex:none;font-weight:600}.task-picker-title{flex-direction:column;display:flex}.task-picker-group{color:var(--text-faint);font-size:11px}.task-picker-empty{padding:6px;font-size:13px}.task-work-log h3{color:var(--text-muted);margin:4px 0 6px;font-size:13px}.task-work-log ul{max-height:180px;margin:0;padding:0;list-style:none;overflow-y:auto}.task-work-log li{grid-template-columns:84px 1fr;gap:8px;padding:4px 0;font-size:13px;display:grid}.task-work-log li+li{border-top:1px solid var(--bg-hover)}.task-work-log-day{color:var(--accent);font-weight:600;text-decoration:none}.task-work-log-text{-webkit-line-clamp:3;white-space:pre-line;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.milestone-open{color:var(--text-muted);white-space:nowrap;border-radius:10px;flex:none;padding:1px 7px;font-size:12px;text-decoration:none}.milestone-open:hover{background:var(--tag-bg,var(--bg-hover));color:var(--tag-fg,var(--text))}.milestone-page-wrap{container-type:inline-size}.milestone-page{grid-template:"head aside""body aside"1fr/minmax(0,1fr) 300px;column-gap:40px;width:100%;max-width:1120px;margin:0 auto;padding:40px 48px 40vh;display:grid}.milestone-page-head{grid-area:head;min-width:0;margin-bottom:8px}.milestone-page-body{grid-area:body;min-width:0}.milestone-page-title{overflow-wrap:anywhere;font-size:40px;font-weight:700;line-height:1.2;overflow:hidden}.milestone-page-meta{align-items:center;gap:12px;margin-top:4px;display:flex}.milestone-page-meta .entity-tags{flex:1;min-width:0;margin:0}.milestone-page-meta .save-status{flex:none}.milestone-aside{flex-direction:column;grid-area:aside;align-self:start;gap:16px;display:flex;position:sticky;top:16px}.milestone-aside-card{border:1px solid var(--border);background:var(--bg);border-radius:12px;padding:12px}.milestone-aside-progress{align-items:center;gap:12px;margin-bottom:10px;display:flex}.milestone-aside-progress .stat-label{color:var(--text-muted);font-size:12px}.milestone-aside-props{grid-template-columns:auto 1fr;align-items:center;gap:8px 12px;margin:12px 0 0;font-size:13px;display:grid}.milestone-aside-props dt{color:var(--text-muted)}.milestone-aside-props dd{min-width:0;margin:0}.milestone-aside-props a{color:inherit}.milestone-aside-head{align-items:baseline;gap:8px;margin-bottom:6px;display:flex}.milestone-aside-head h2{margin:0;font-size:15px}.milestone-aside-head .muted{font-size:12px}.milestone-aside .milestone-tasks{margin-top:0}.milestone-aside .milestone-task,.milestone-aside .milestone-add{margin-left:0}@container (width<=760px){.milestone-page{grid-template:"head""aside""body"/minmax(0,1fr);row-gap:16px;padding:24px 24px 40vh}.milestone-aside{position:static}}@container (width<=480px){.milestone-page{padding:20px 16px 40vh}.milestone-page-title{font-size:30px}}.milestone-task-page{border-radius:var(--radius);color:var(--text-faint);opacity:0;flex:none;padding:0 6px;text-decoration:none}.milestone-task:hover .milestone-task-page,.milestone-task-page:focus-visible{opacity:1}.milestone-task-page:hover{background:var(--bg-active);color:var(--text)}@media (hover:none){.milestone-task-page{opacity:1}}.task-page-status{align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.task-page-status.status-in_progress{color:var(--in-progress)}.task-page-status.status-complete{color:var(--complete)}.task-page-description{color:var(--text-muted);white-space:pre-line;margin:12px 0 0;font-size:13px}.task-page-edit{width:100%;margin-top:12px}.task-page-log:empty{display:none}.task-page-log .task-work-log h3{margin-top:0}.person-avatar{background:var(--tag-bg);color:var(--tag-fg);letter-spacing:.02em;-webkit-user-select:none;user-select:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex}.people-upcoming{gap:10px;margin-top:20px;padding-bottom:2px;display:flex;overflow-x:auto}.people-upcoming-item{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:12px;flex:none;align-items:center;gap:10px;padding:8px 14px 8px 10px;font-size:13px;text-decoration:none;display:flex}.people-upcoming-item:hover{background:var(--bg-hover)}.people-upcoming-item.is-today{border-color:var(--birthday-border);background:var(--birthday-bg)}.people-upcoming-cake{font-size:20px}.people-upcoming-text{flex-direction:column;line-height:1.3;display:flex}.people-upcoming-text strong{font-weight:600}.people-upcoming-text .muted{font-size:12px}.people-toolbar{flex-wrap:wrap;align-items:center;gap:10px 16px;margin:20px 0 16px;display:flex}.people-search{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);min-width:0;font:inherit;color:var(--text);outline:none;flex:220px;padding:6px 10px;font-size:14px}.people-search:focus{border-color:var(--accent)}.people-filter{max-width:100%;overflow-x:auto}.people-filter button{white-space:nowrap}.people-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.person-card{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:12px;align-items:flex-start;gap:12px;padding:14px;text-decoration:none;transition:box-shadow .15s,transform .15s,border-color .15s;display:flex}a.person-card:hover{box-shadow:var(--shadow);border-color:#0000;transform:translateY(-1px)}.person-card-text{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.person-card-name{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;line-height:1.3;overflow:hidden}.person-card-name .muted{font-weight:400}.person-card-line{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.person-card-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:6px;font-size:12px;display:flex}.relationship-pill{background:var(--tag-bg);color:var(--tag-fg);border-radius:10px;padding:1px 8px;font-weight:500}.person-card-new{border-style:dashed;border-color:var(--tag-fg);flex-direction:column;align-items:stretch}.person-card-names{gap:8px;display:flex}.person-card-names input{border:1px solid var(--border);border-radius:var(--radius);min-width:0;font:inherit;color:var(--text);background:var(--bg);outline:none;flex:1;padding:6px 8px;font-size:14px}.person-card-names input:focus{border-color:var(--accent)}.person-page-title-row{align-items:center;gap:16px;display:flex}.person-page-titles{min-width:0}.person-page-title{margin:0}.person-page-subtitle{margin-top:2px;font-size:15px}.person-page .milestone-page-meta{margin-top:12px}.person-props{margin-top:0}.person-props dd{min-width:0}.person-field{width:calc(100% + 7px);font-size:13px}textarea.person-field{field-sizing:content;min-height:2.6em}.person-select{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);max-width:100%;font:inherit;color:var(--text);padding:2px 4px;font-size:13px}.birthday-input{align-items:center;gap:4px;display:flex}.date-parts{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.date-parts input{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);width:3.2em;min-width:0;font:inherit;color:var(--text);padding:2px 4px;font-size:13px}.date-parts input+input{width:4.2em}.date-parts.is-invalid input,.date-parts.is-invalid select{border-color:var(--danger)}.date-parts .person-select{flex:1;min-width:0}.person-birthday-summary{color:var(--text-muted);grid-column:2;font-size:12px;margin-top:-4px!important}.person-actions{flex-wrap:wrap;gap:6px;margin-top:12px;display:flex}.person-actions .btn{color:var(--text);font-size:12px;text-decoration:none}.person-mentions-hint{margin:0;font-size:12px}.person-mentions{margin:0;padding:0;list-style:none}.person-mentions button{border-radius:var(--radius);text-align:left;width:100%;color:var(--text);align-items:center;gap:8px;margin-left:-6px;padding:4px 6px;font-size:13px;display:flex}.person-mentions button:hover{background:var(--bg-hover)}.person-mention-icon{flex:none}.person-mention-title{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.person-mention-type{color:var(--text-faint);flex:none;font-size:11px}@media (width<=768px){.people-grid{grid-template-columns:minmax(0,1fr)}}.person-photo{object-fit:cover;background:var(--bg-hover)}.person-photo-button>button{border-radius:50%;padding:0;display:block;position:relative}.person-photo-edit{background:var(--bg);width:24px;height:24px;box-shadow:var(--shadow);color:var(--text-muted);opacity:0;border-radius:50%;justify-content:center;align-items:center;font-size:12px;transition:opacity .15s;display:flex;position:absolute;bottom:-2px;right:-2px}.person-photo-button>button:hover .person-photo-edit,.person-photo-button>button:focus-visible .person-photo-edit{opacity:1}@media (hover:none){.person-photo-edit{opacity:1}}.list-editor{margin-top:12px}.list-editor:first-of-type{margin-top:4px}.list-editor-title{color:var(--text-muted);margin-bottom:4px;font-size:12px}.list-editor-row{align-items:flex-start;gap:4px;margin-bottom:4px;display:flex}.list-editor-fields{flex:1;align-items:center;gap:4px;min-width:0;display:flex}.list-editor-remove{opacity:.5;flex:none;margin-top:2px}.list-editor-remove:hover{opacity:1}.list-editor-add{color:var(--accent);padding:2px 0;font-size:12px}.list-editor-add:hover{text-decoration:underline}.label-select{width:6.6em;color:var(--text-muted);flex:none}.row-input{border-radius:var(--radius);background:var(--bg-hover);width:100%;min-width:0;font:inherit;color:var(--text);resize:none;border:1px solid #0000;outline:none;flex:1;padding:3px 6px;font-size:13px}.row-input:focus{border-color:var(--border);background:var(--bg)}textarea.row-input{field-sizing:content;min-height:2.6em}.row-link{color:var(--text-muted);flex:none;padding:0 2px;font-size:13px;text-decoration:none}.address-row{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.address-row .label-select{align-self:flex-start}.address-row-pair{gap:4px;display:flex}.people-empty-actions{justify-content:center}.import-dialog{flex-direction:column;gap:12px;max-width:640px;max-height:80vh;display:flex}.import-head{justify-content:space-between;align-items:center;display:flex}.import-head h2{margin:0;font-size:18px}.import-intro{margin:0;font-size:13px}.import-steps{margin:0;padding-left:18px;font-size:13px;line-height:1.5}.import-steps li+li{margin-top:4px}.import-toolbar{align-items:center;gap:6px;display:flex}.import-list{border:1px solid var(--border);border-radius:var(--radius);flex:1;min-height:120px;margin:0;padding:0;list-style:none;overflow-y:auto}.import-list li+li{border-top:1px solid var(--border)}.import-row{cursor:pointer;align-items:center;gap:10px;padding:6px 10px;display:flex}.import-row:hover{background:var(--bg-hover)}.import-row-text{flex-direction:column;flex:1;min-width:0;line-height:1.3;display:flex}.import-row-name{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;overflow:hidden}.import-row-sub{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.import-badge{flex:none;font-size:12px}.import-badge.is-merge{background:var(--birthday-bg);max-width:40%;color:var(--text);text-overflow:ellipsis;white-space:nowrap;border-radius:10px;padding:1px 8px;overflow:hidden}.import-none{padding:12px;font-size:13px}.import-actions{flex-wrap:wrap}.import-relationship{color:var(--text-muted);align-items:center;gap:6px;font-size:13px;display:flex}.import-result{margin:0;font-size:15px}
