:root[data-theme=dark]{color-scheme:dark;--c-canvas: #0b0e14;--c-surface: #141922;--c-surface-2: #1a2029;--c-surface-3: #202834;--c-surface-inset: #0e121a;--c-scrim: rgba(4, 6, 10, .62);--c-border: #242b37;--c-border-strong: #333c4c;--c-border-focus: #4ae3b5;--c-text: #e8ecf1;--c-text-2: #aeb8c7;--c-text-muted: #8a94a6;--c-text-faint: #5c6675;--c-text-done: #8892a2;--c-text-inverse: #0b0e14;--c-accent: #4ae3b5;--c-accent-hover: #6eebc6;--c-accent-active: #2fcfa0;--c-accent-subtle: rgba(74, 227, 181, .14);--c-accent-contrast: #04241b;--c-success: #3dd68c;--c-success-subtle: rgba(61, 214, 140, .14);--c-warning: #f5b14c;--c-warning-subtle: rgba(245, 177, 76, .14);--c-danger: #f26d6d;--c-danger-hover: #f58a8a;--c-danger-subtle: rgba(242, 109, 109, .14);--c-info: #5aa9f5;--c-info-subtle: rgba(90, 169, 245, .14);--c-neutral: #8a94a6;--c-danger-text: #f26d6d;--c-warning-text: #f5b14c;--c-info-text: #5aa9f5;--c-success-text: #3dd68c;--kbd-bg: #202834;--kbd-text: #aeb8c7;--kbd-border: #333c4c;--sh-sm: 0 1px 2px rgba(0, 0, 0, .4);--sh-md: 0 4px 12px rgba(0, 0, 0, .45);--sh-lg: 0 12px 32px rgba(0, 0, 0, .5)}:root[data-theme=light]{color-scheme:light;--c-canvas: #f4f7f9;--c-surface: #ffffff;--c-surface-2: #f7f9fb;--c-surface-3: #ffffff;--c-surface-inset: #f1f4f7;--c-scrim: rgba(16, 24, 38, .42);--c-border: #e3e8ef;--c-border-strong: #cbd4e0;--c-border-focus: #0e9e7e;--c-text: #111826;--c-text-2: #3a4657;--c-text-muted: #5a6577;--c-text-faint: #8a94a6;--c-text-done: #667085;--c-text-inverse: #ffffff;--c-accent: #0e9e7e;--c-accent-hover: #0c8a6e;--c-accent-active: #0a7660;--c-accent-subtle: rgba(14, 158, 126, .1);--c-accent-contrast: #ffffff;--c-success: #12a66e;--c-success-subtle: rgba(18, 166, 110, .1);--c-warning: #c87f16;--c-warning-subtle: rgba(200, 127, 22, .12);--c-danger: #d64545;--c-danger-hover: #c23a3a;--c-danger-subtle: rgba(214, 69, 69, .1);--c-info: #2b7fd4;--c-info-subtle: rgba(43, 127, 212, .1);--c-neutral: #98a2b3;--c-danger-text: #b42318;--c-warning-text: #8a5a00;--c-info-text: #1d63b0;--c-success-text: #0b7a52;--kbd-bg: #f1f4f7;--kbd-text: #3a4657;--kbd-border: #cbd4e0;--sh-sm: 0 1px 2px rgba(16, 24, 38, .06);--sh-md: 0 4px 12px rgba(16, 24, 38, .08);--sh-lg: 0 12px 32px rgba(16, 24, 38, .12)}:root{--text-primary: var(--c-text);--text-secondary: var(--c-text-2);--text-tertiary: var(--c-text-muted);--text-disabled: var(--c-text-faint);--text-done: var(--c-text-done);--text-inverse: var(--c-text-inverse);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Code", Menlo, Consolas, "PingFang SC", "Microsoft YaHei", monospace;--fs-2xs: 11px;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 14px;--fs-md: 15px;--fs-lg: 16px;--fs-xl: 18px;--fs-2xl: 20px;--fs-3xl: 24px;--fs-4xl: 30px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 10px;--r-xl: 12px;--r-full: 9999px;--dur-fast: .12s;--dur-base: .16s;--dur-slow: .2s;--dur-enter: .2s;--dur-exit: .12s;--ease-standard: cubic-bezier(.2, .8, .2, 1);--ease-decelerate: cubic-bezier(.16, 1, .3, 1);--ease-accelerate: cubic-bezier(.4, 0, 1, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--kbd-h: 20px;--kbd-min-w: 20px;--kbd-pad: 0 5px;--kbd-radius: 4px;--kbd-font: 11px;--kbd-weight: 600;--kbd-lh: 1;--kbd-gap: 2px;--kbd-shadow: var(--sh-sm);--rail-w: 56px;--rail-w-open: 200px;--list-w: 280px;--list-min: 260px;--list-max: 420px;--content-min: 480px;--toolbar-h: 48px;--subbar-h: 44px;--tabbar-h: 56px}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.6;color:var(--c-text);background:var(--c-canvas);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}h1,h2,h3,h4,h5,h6,p,figure,blockquote{margin:0}ul,ol{margin:0;padding:0}a{color:var(--c-accent);text-decoration:underline;text-underline-offset:2px}a:hover{color:var(--c-accent-hover)}img{max-width:100%}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none;padding:0}input,textarea{background:none;border:none;outline:none}::placeholder{color:var(--c-text-faint)}:focus-visible{outline:2px solid var(--c-border-focus);outline-offset:2px;border-radius:inherit}.tnum{font-variant-numeric:tabular-nums}*{scrollbar-width:thin;scrollbar-color:var(--c-border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--c-border-strong);border-radius:var(--r-full);border:3px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:var(--c-text-faint);background-clip:content-box}*::-webkit-scrollbar-track{background:transparent}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition-property:opacity,color,background-color,border-color,box-shadow!important;transition-duration:.12s!important}.popover,.modal,.toast,.lightbox,.drawer,.anim-pop,.anim-view{transform:none!important}.spinner,.skeleton{animation:none!important}.skeleton{background-image:none!important;background:var(--c-surface-inset)!important}}.app{display:flex;height:100dvh;width:100%;overflow:hidden;background:var(--c-canvas);color:var(--c-text);position:relative}.rail{flex:0 0 auto;width:var(--rail-w);display:none;flex-direction:column;align-items:center;background:var(--c-canvas);border-right:1px solid var(--c-border);padding:var(--sp-3) 0 var(--sp-2);z-index:44;transition:width var(--dur-slow) var(--ease-standard)}.app.rail-open .rail{width:var(--rail-w-open);align-items:stretch}.rail-brand{display:flex;align-items:center;gap:var(--sp-2);height:32px;padding:0 8px;margin:0 auto var(--sp-4);color:var(--c-text);font-weight:700;font-size:var(--fs-sm);letter-spacing:-.01em}.app.rail-open .rail-brand{margin-left:8px}.rail-brand .dot{width:20px;height:20px;border-radius:var(--r-full);background:var(--c-accent);flex:0 0 auto;display:grid;place-items:center;color:var(--c-accent-contrast)}.rail-brand .brand-text{display:none;white-space:nowrap}.app.rail-open .rail-brand .brand-text{display:inline}.rail-nav{display:flex;flex-direction:column;gap:var(--sp-1);padding:0 8px;flex:1 1 auto;width:100%}.rail-foot{display:flex;flex-direction:column;gap:var(--sp-1);padding:0 8px;width:100%}.rail-item{position:relative;display:flex;align-items:center;gap:var(--sp-3);height:40px;width:40px;margin:0 auto;padding:0;justify-content:center;border-radius:var(--r-sm);color:var(--c-text-muted);transition:background-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.app.rail-open .rail-item{width:100%;height:36px;justify-content:flex-start;padding:0 10px;margin:0}.rail-item:hover{background:var(--c-surface-2);color:var(--c-text)}.rail-item .rail-label{display:none;white-space:nowrap;font-size:var(--fs-base);color:var(--c-text-2)}.app.rail-open .rail-item .rail-label{display:inline}.rail-item[aria-current=page]{background:var(--c-accent-subtle);color:var(--c-accent)}.rail-item[aria-current=page] .rail-label{color:var(--c-text);font-weight:600}.rail-item[aria-current=page]:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:var(--r-full);background:var(--c-accent)}.app.rail-open .rail-item[aria-current=page]:before{left:-8px}.rail-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;border-radius:var(--r-full);background:var(--c-danger);color:#fff;font-size:var(--fs-2xs);font-weight:600;line-height:16px;text-align:center;font-variant-numeric:tabular-nums}.app.rail-open .rail-badge{position:static;margin-left:auto}.rail-item .tip{position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%) translate(-4px);background:var(--c-surface-3);color:var(--c-text);border:1px solid var(--c-border);border-radius:var(--r-md);box-shadow:var(--sh-md);padding:5px 10px;font-size:var(--fs-xs);white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-standard);transition-delay:0ms;z-index:60}.app:not(.rail-open) .rail-item:hover .tip{opacity:1;transition-delay:.4s}.app.rail-open .tip{display:none}.listpane{flex:0 0 auto;width:var(--list-w);display:flex;flex-direction:column;background:var(--c-surface);border-right:1px solid var(--c-border);position:relative;z-index:20;transition:width var(--dur-slow) var(--ease-standard)}.app.list-collapsed .listpane{width:0;border-right-width:0;overflow:hidden}.listpane-head{flex:0 0 auto;height:var(--toolbar-h);display:flex;align-items:center;gap:var(--sp-2);padding:0 8px 0 16px;border-bottom:1px solid var(--c-border)}.listpane-title{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.01em;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.listpane-body{flex:1 1 auto;overflow:auto;padding:var(--sp-2) 8px var(--sp-6)}.listpane-foot{flex:0 0 auto;border-top:1px solid var(--c-border);padding:8px}.resizer{position:absolute;top:0;right:-3px;width:6px;height:100%;cursor:col-resize;z-index:25;touch-action:none}.resizer:after{content:"";position:absolute;inset:0 2px;background:transparent;transition:background-color var(--dur-fast) var(--ease-standard)}.resizer:hover:after,.resizer.dragging:after{background:var(--c-accent)}.content{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;background:var(--c-surface);position:relative;z-index:10}.content-toolbar{flex:0 0 auto;height:var(--toolbar-h);display:flex;align-items:center;gap:var(--sp-2);padding:0 12px 0 8px;border-bottom:1px solid var(--c-border)}.content-subbar{flex:0 0 auto;min-height:var(--subbar-h);display:flex;align-items:center;gap:var(--sp-2);padding:0 16px;border-bottom:1px solid var(--c-border);color:var(--c-text-muted);font-size:var(--fs-xs)}.content-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.content-scroll{flex:1 1 auto;min-height:0;overflow:auto}.workspace-row{display:flex;flex:1 1 auto;min-height:0;min-width:0}.crumbs{display:flex;align-items:center;gap:2px;min-width:0;color:var(--c-text-muted);font-size:var(--fs-sm)}.crumbs .crumb{padding:3px 6px;border-radius:var(--r-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}.crumbs .crumb-sep{color:var(--c-text-faint);flex:0 0 auto}.crumbs .crumb.current{color:var(--c-text);font-weight:500}.content-title{font-size:var(--fs-lg);font-weight:600;letter-spacing:-.01em;display:flex;align-items:center;gap:var(--sp-2);min-width:0;flex:1 1 auto;justify-content:center}.content-title .t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-actions{display:flex;align-items:center;gap:4px;margin-left:auto;flex:0 0 auto}.scrim{position:fixed;inset:0;background:var(--c-scrim);z-index:40;opacity:0;animation:scrim-in var(--dur-base) var(--ease-standard) forwards;border:none;padding:0}@keyframes scrim-in{to{opacity:1}}.tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--c-surface);border-top:1px solid var(--c-border);box-shadow:0 -1px 2px #0000000f;z-index:50}.tabbar .tab{flex:1 1 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:44px;min-height:44px;color:var(--c-text-muted);font-size:var(--fs-2xs);position:relative;transition:color var(--dur-fast) var(--ease-standard)}.tabbar .tab[aria-current=page]{color:var(--c-accent);font-weight:600}.tabbar .tab[aria-current=page]:before{content:"";position:absolute;top:0;left:50%;transform:translate(-50%);width:28px;height:2px;border-radius:var(--r-full);background:var(--c-accent)}@media (max-width: 767px){.rail{display:none}.listpane{position:fixed;top:0;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom));left:0;width:min(88vw,340px)!important;max-width:340px;transform:translate(-100%);transition:transform var(--dur-slow) var(--ease-decelerate);box-shadow:var(--sh-lg);z-index:45}.app.drawer-open .listpane{transform:translate(0)}.app.list-collapsed .listpane{width:min(88vw,340px)!important;overflow:visible}.resizer{display:none}.content{padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}.content-title{justify-content:flex-start}}@media (min-width: 768px) and (max-width: 1023px){.rail{display:flex}.listpane{position:fixed;top:0;bottom:0;left:var(--rail-w);width:280px!important;transform:translate(calc(-100% - var(--rail-w)));transition:transform var(--dur-slow) var(--ease-decelerate);box-shadow:var(--sh-lg);z-index:45}.app.drawer-open .listpane{transform:translate(0)}.app.list-collapsed .listpane{width:280px!important;overflow:visible}.resizer{display:none}.content-title{justify-content:flex-start}}@media (min-width: 1024px){.rail{display:flex}.content{min-width:var(--content-min)}.app:not(.list-collapsed) .listpane .drawer-close{display:none}}@media (min-width: 1280px){.content-body.with-outline .outline{display:flex}}@media (min-width: 1440px){.content-subbar{padding:0 24px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 10px;border-radius:var(--r-sm);color:var(--c-text-2);background:transparent;font-size:var(--fs-sm);font-weight:500;white-space:nowrap;transition:background-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.btn:hover{background:var(--c-surface-2);color:var(--c-text)}.btn:active{background:var(--c-surface-3)}.btn:disabled,.btn[aria-disabled=true]{opacity:.4;cursor:not-allowed}.btn.icon{width:32px;padding:0}.btn.icon-sm{width:28px;height:28px;padding:0;border-radius:var(--r-sm)}.btn.accent{color:var(--c-accent)}.btn.accent:hover{background:var(--c-accent-subtle);color:var(--c-accent)}.btn.primary{background:var(--c-accent);color:var(--c-accent-contrast);font-weight:600}.btn.primary:hover{background:var(--c-accent-hover);color:var(--c-accent-contrast)}.btn.primary:active{background:var(--c-accent-active)}.btn.danger{color:var(--c-danger-text)}.btn.danger:hover{background:var(--c-danger-subtle);color:var(--c-danger-text)}.btn.primary.danger{background:var(--c-danger);color:#fff}.btn.primary.danger:hover{background:var(--c-danger-hover)}.btn.text{height:auto;padding:2px 4px;font-size:var(--fs-xs)}.btn.grow{flex:1 1 auto}.btn-lg{height:36px;padding:0 16px;font-weight:600;border-radius:var(--r-sm)}.btn-dashed{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;height:36px;border:1px dashed var(--c-border-strong);border-radius:var(--r-sm);color:var(--c-text-muted);font-size:var(--fs-sm);background:transparent;transition:border-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.btn-dashed:hover{border-color:var(--c-accent);color:var(--c-accent)}.segmented{display:inline-flex;align-items:center;height:30px;padding:2px;gap:2px;background:var(--c-surface-inset);border-radius:var(--r-md)}.segmented button{height:26px;padding:0 10px;border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:500;color:var(--c-text-muted);transition:background-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard)}.segmented button[aria-pressed=true]{background:var(--c-surface);color:var(--c-text);box-shadow:var(--sh-sm)}.badge{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 6px;border-radius:var(--r-xs);font-size:var(--fs-2xs);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.badge .pt{width:8px;height:8px;border-radius:var(--r-full);background:currentColor;flex:0 0 auto}.badge.plain{background:var(--c-surface-3);color:var(--c-text-muted)}.badge.success{background:var(--c-success-subtle);color:var(--c-success-text)}.badge.warning{background:var(--c-warning-subtle);color:var(--c-warning-text)}.badge.danger{background:var(--c-danger-subtle);color:var(--c-danger-text)}.badge.info{background:var(--c-info-subtle);color:var(--c-info-text)}.badge.neutral{background:var(--c-surface-3);color:var(--c-text-muted)}.badge.neutral .pt{background:var(--c-neutral)}.count{min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-full);background:var(--c-surface-3);color:var(--c-text-muted);font-size:var(--fs-2xs);font-weight:500;line-height:18px;text-align:center;font-variant-numeric:tabular-nums}.node{position:relative;display:flex;align-items:center;gap:6px;width:100%;border-radius:var(--r-sm);color:var(--c-text);text-align:left;transition:background-color var(--dur-fast) var(--ease-standard)}.node:hover{background:var(--c-surface-2)}.node[aria-selected=true],.node[aria-current=page]{background:var(--c-accent-subtle)}.node[aria-selected=true]:before,.node[aria-current=page]:before{content:"";position:absolute;left:0;top:16%;bottom:16%;width:3px;border-radius:var(--r-full);background:var(--c-accent)}.node .label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;min-width:0}.node .chev{flex:0 0 auto;color:var(--c-text-muted);display:grid;place-items:center;transition:transform var(--dur-base) var(--ease-decelerate)}.node .chev.open{transform:rotate(90deg)}.node .ico{flex:0 0 auto;color:var(--c-text-muted);display:grid;place-items:center}.node .trail{flex:0 0 auto;display:flex;align-items:center;gap:4px;opacity:0;transition:opacity var(--dur-fast) var(--ease-standard)}.node:hover .trail,.node:focus-within .trail{opacity:1}.year-node{height:32px;padding:0 8px;font-size:var(--fs-sm);font-weight:600}.year-node .label{color:var(--c-text)}.year-node.current:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;border-radius:var(--r-full);background:var(--c-accent)}.month-node{height:28px;padding:0 8px 0 16px;font-size:var(--fs-xs);font-weight:500}.month-node .label{color:var(--c-text-muted)}.month-node:hover .label{color:var(--c-text)}.month-node .count{opacity:0;transition:opacity var(--dur-fast) var(--ease-standard)}.month-node:hover .count,.month-node:focus-within .count{opacity:1}.month-node.is-empty{cursor:default}.month-node.is-empty .label{color:var(--c-text-muted);font-weight:400}.month-node.is-empty:hover{background:none}.month-node.is-empty:hover .label{color:var(--c-text-2)}.month-node .chev-slot{flex:0 0 auto;width:12px;height:12px}.month-node.is-empty .count{opacity:1;background:none;padding:0;color:var(--c-text-faint)}.day-node{height:34px;padding:0 8px 0 32px;font-size:var(--fs-base)}.day-node .day-date{flex:0 0 auto;font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums;width:44px}.day-node .day-week{flex:0 0 auto;font-size:var(--fs-2xs);color:var(--c-text-faint);width:26px}.day-node .label{font-size:var(--fs-base);color:var(--c-text)}.day-node .day-sep{flex:0 0 auto;color:var(--c-text-faint)}.day-node .day-title{color:var(--c-text-2);font-size:var(--fs-sm)}.day-node.today .day-title{color:var(--c-text)}.day-node.placeholder .label{color:var(--c-text-faint)}.month-group{position:relative}.month-group:before{content:"";position:absolute;left:24px;top:0;bottom:0;width:1px;background:var(--c-border)}.folder-node{height:30px;padding:0 8px;font-size:var(--fs-base)}.file-node{height:32px;padding:0 8px;font-size:var(--fs-base)}.node .node-actions{display:flex;gap:2px;opacity:0;transition:opacity var(--dur-fast) var(--ease-standard)}.node:hover .node-actions,.node:focus-within .node-actions{opacity:1}@media (hover: none){.node .node-actions{opacity:1}}.row-main{flex:1 1 auto;min-width:0;display:flex;align-items:center;gap:6px;background:none;padding:0;text-align:left;color:inherit;border-radius:var(--r-sm)}.empty-folder{padding:4px 8px;color:var(--c-text-faint);font-size:var(--fs-xs)}.inline-input-row{display:flex;align-items:center;gap:6px;padding:2px 8px}.inline-input{height:26px;flex:1 1 auto;min-width:0;padding:0 8px;border-radius:var(--r-xs);background:var(--c-surface-inset);border:1px solid var(--c-accent);color:var(--c-text);font-size:var(--fs-base);box-shadow:0 0 0 2px var(--c-accent-subtle)}.inline-input[aria-invalid=true]{border-color:var(--c-danger);box-shadow:0 0 0 2px var(--c-danger-subtle)}.inline-error{font-size:var(--fs-2xs);color:var(--c-danger-text);padding:2px 8px 4px}.checkbox{flex:0 0 auto;width:18px;height:18px;border-radius:5px;border:1.5px solid var(--c-border-strong);background:transparent;display:grid;place-items:center;color:#fff;transition:background-color var(--dur-base) var(--ease-standard),border-color var(--dur-base) var(--ease-standard),transform var(--dur-slow) var(--ease-spring)}.checkbox:hover{border-color:var(--c-accent)}.checkbox:active{transform:scale(.9)}.checkbox.on{background:var(--c-success);border-color:var(--c-success)}.checkbox .tick{stroke-dasharray:20;stroke-dashoffset:0;animation:tick-draw var(--dur-slow) var(--ease-standard) forwards}@keyframes tick-draw{0%{stroke-dashoffset:20}to{stroke-dashoffset:0}}.progressbar{height:4px;border-radius:2px;background:var(--c-surface-inset);overflow:hidden;flex:1 1 auto;min-width:40px}.progressbar .fill{height:100%;border-radius:2px;transition:width var(--dur-slow) var(--ease-standard),background-color var(--dur-base) var(--ease-standard)}.fill-s0{background:var(--c-neutral)}.fill-s1{background:var(--c-warning)}.fill-s2{background:var(--c-success)}.field{display:flex;align-items:center;gap:6px;height:32px;padding:0 10px;border-radius:var(--r-sm);background:var(--c-surface-inset);border:1px solid var(--c-border-strong);color:var(--c-text);transition:border-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard)}.field:focus-within{border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-subtle)}.field input{flex:1 1 auto;min-width:0;font-size:var(--fs-base)}.field .ico{color:var(--c-text-muted);flex:0 0 auto}.field input:focus,.field input:focus-visible{outline:none}.field input:-webkit-autofill,.field input:-webkit-autofill:hover,.field input:-webkit-autofill:focus{-webkit-text-fill-color:var(--c-text);-webkit-box-shadow:0 0 0 1000px var(--c-surface-inset) inset;caret-color:var(--c-text)}.field-toggle{flex:0 0 auto;display:grid;place-items:center;width:24px;height:24px;border-radius:var(--r-xs);color:var(--c-text-muted);transition:color var(--dur-fast) var(--ease-standard),background-color var(--dur-fast) var(--ease-standard)}.field-toggle:hover{color:var(--c-accent);background:var(--c-accent-subtle)}.field-toggle:focus-visible{outline:2px solid var(--c-border-focus);outline-offset:1px}select.field{cursor:pointer;appearance:none;padding-right:24px}.empty{max-width:340px;margin:8% auto 0;padding:var(--sp-6);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);color:var(--c-text-muted)}.empty .art{color:var(--c-text-faint);margin-bottom:var(--sp-1)}.empty h3{font-size:var(--fs-xl);font-weight:600;color:var(--c-text)}.empty p{font-size:var(--fs-sm);color:var(--c-text-muted);line-height:1.6}.empty .actions{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2)}.errorstate{max-width:380px;margin:8% auto 0;padding:var(--sp-6);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--sp-3)}.errorstate .art{color:var(--c-danger)}.errorstate h3{font-size:var(--fs-xl);font-weight:600;color:var(--c-text)}.errorstate p{font-size:var(--fs-sm);color:var(--c-text-muted);word-break:break-word}.spinner{width:16px;height:16px;border-radius:var(--r-full);border:2px solid var(--c-border-strong);border-top-color:var(--c-accent);animation:spin .7s linear infinite}.spinner.lg{width:24px;height:24px;border-width:2.5px}@keyframes spin{to{transform:rotate(360deg)}}.loading-wrap{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-8);color:var(--c-text-muted);font-size:var(--fs-sm)}@keyframes shimmer{0%{background-position:-100% 0}to{background-position:200% 0}}.skeleton{border-radius:var(--r-md);background:linear-gradient(90deg,var(--c-surface-inset) 0%,var(--c-surface-2) 50%,var(--c-surface-inset) 100%);background-size:200% 100%;animation:shimmer 1.2s linear infinite}.upload-status{position:absolute;right:16px;bottom:16px;display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--c-surface-3);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--sh-md);font-size:var(--fs-sm);color:var(--c-text-2);z-index:22}.toast-host{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:90;pointer-events:none}.toast{pointer-events:auto;position:relative;display:flex;align-items:center;gap:10px;min-width:220px;max-width:360px;padding:12px 16px 12px 15px;background:var(--c-surface-3);border:1px solid var(--c-border);border-radius:var(--r-lg);box-shadow:var(--sh-lg);font-size:var(--fs-sm);color:var(--c-text);animation:toast-in var(--dur-enter) var(--ease-decelerate)}.toast.out{animation:toast-out var(--dur-exit) var(--ease-accelerate) forwards}.toast:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:var(--r-full);background:var(--c-info)}.toast.success:before{background:var(--c-success)}.toast.warning:before{background:var(--c-warning)}.toast.error:before{background:var(--c-danger)}.toast .msg{flex:1 1 auto}.toast .act{flex:0 0 auto;color:var(--c-accent);font-size:var(--fs-xs);font-weight:600}@keyframes toast-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(8px)}}@media (max-width: 767px){.toast-host{left:12px;right:12px;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 12px);align-items:center}.toast{width:100%}}.modal-scrim{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:16px;background:var(--c-scrim);animation:scrim-in var(--dur-base) var(--ease-standard)}.modal{width:100%;max-width:400px;padding:var(--sp-6);background:var(--c-surface-3);border:1px solid var(--c-border);border-radius:var(--r-xl);box-shadow:var(--sh-lg);animation:modal-in var(--dur-enter) var(--ease-decelerate)}.modal.wide{max-width:520px}.modal h2{font-size:var(--fs-lg);font-weight:600;margin-bottom:var(--sp-2)}.modal .modal-body{font-size:var(--fs-sm);color:var(--c-text-2);line-height:1.6}.modal .modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:var(--sp-5)}@keyframes modal-in{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}.login-layer{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:20px;background-color:var(--c-canvas);background-image:radial-gradient(120% 80% at 50% -8%,var(--c-accent-subtle),transparent 62%)}.login-card{width:100%;max-width:360px;display:flex;flex-direction:column;gap:var(--sp-4);padding:var(--sp-8) var(--sp-6) var(--sp-6);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-xl);box-shadow:var(--sh-lg)}.login-brand{display:flex;align-items:center;gap:10px;font-size:var(--fs-3xl);font-weight:700;letter-spacing:-.01em;justify-content:center}.login-brand .dot{width:32px;height:32px;border-radius:var(--r-full);background:var(--c-accent);display:grid;place-items:center;color:var(--c-accent-contrast)}.login-sub{text-align:center;color:var(--c-text-muted);font-size:var(--fs-sm);margin-top:calc(-1 * var(--sp-2))}.login-field{height:40px;padding:0 6px 0 12px;gap:8px}.login-field.is-invalid{border-color:var(--c-danger)}.login-field.is-invalid:focus-within{border-color:var(--c-danger);box-shadow:0 0 0 3px var(--c-danger-subtle)}.login-error{display:flex;align-items:center;gap:6px;min-height:18px;margin-top:calc(-1 * var(--sp-2));color:var(--c-danger-text);font-size:var(--fs-xs);line-height:1.4}.login-error:empty{visibility:hidden}.login-card .btn-lg{width:100%;height:40px}.lightbox{position:fixed;inset:0;z-index:110;display:grid;place-items:center;background:var(--c-scrim);animation:scrim-in var(--dur-base) var(--ease-standard);padding:4vh 4vw}.lightbox img{max-width:90vw;max-height:88vh;border-radius:var(--r-xl);box-shadow:var(--sh-lg);animation:lb-in var(--dur-slow) var(--ease-decelerate)}.lightbox .lb-actions{position:absolute;top:16px;right:16px;display:flex;gap:8px}.lightbox .lb-btn{width:36px;height:36px;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--c-surface-3);color:var(--c-text);border:1px solid var(--c-border)}.lightbox .lb-btn:hover{color:var(--c-accent)}@keyframes lb-in{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}kbd{display:inline-flex;align-items:center;justify-content:center;height:var(--kbd-h);min-width:var(--kbd-min-w);padding:var(--kbd-pad);border-radius:var(--kbd-radius);background:var(--kbd-bg);color:var(--kbd-text);border:1px solid var(--kbd-border);border-bottom-width:2px;box-shadow:var(--kbd-shadow);font-family:var(--font-sans);font-size:var(--kbd-font);font-weight:var(--kbd-weight);line-height:var(--kbd-lh);font-variant-numeric:tabular-nums}.kbd-group{display:inline-flex;gap:var(--kbd-gap)}.editor-pane{display:flex;flex:1 1 auto;min-height:0;position:relative}.editor-split{display:flex;flex:1 1 auto;min-height:0;min-width:0}.editor-col{flex:1 1 50%;min-width:0;min-height:0;display:flex;flex-direction:column;position:relative}.editor-col.preview-col{overflow:auto;background:var(--c-surface)}.editor-col+.editor-col{border-left:1px solid var(--c-border)}.editor-split>.split-handle+.editor-col{border-left:1px solid var(--c-border)}.split-handle{flex:0 0 auto;width:6px;cursor:col-resize;background:transparent;position:relative;z-index:5}.split-handle:after{content:"";position:absolute;inset:0 2px;border-radius:var(--r-full);transition:background-color var(--dur-fast) var(--ease-standard)}.split-handle:hover:after,.split-handle.dragging:after{background:var(--c-accent)}.cm-host{flex:1 1 auto;min-height:0;overflow:hidden}.cm-host .cm-editor{height:100%}.cm-host .cm-scroller{font-family:var(--font-mono);font-size:var(--fs-md);line-height:1.75}.cm-host .cm-editor.cm-focused{outline:none!important}.cm-host:focus-within{box-shadow:none}.cm-host .cm-md-h1,.cm-host .cm-md-h2,.cm-host .cm-md-h3,.cm-host .cm-md-h4,.cm-host .cm-md-h5,.cm-host .cm-md-h6{font-weight:600;line-height:1.4;letter-spacing:-.01em;color:var(--c-text)}.cm-host .cm-md-h1{font-size:var(--fs-2xl);padding-top:1.2em}.cm-host .cm-md-h2{font-size:var(--fs-xl);padding-top:1.2em;padding-bottom:.3em;border-bottom:1px solid var(--c-border)}.cm-host .cm-md-h3{font-size:var(--fs-lg)}.cm-host .cm-md-h4{font-size:var(--fs-md)}.cm-host .cm-md-h5,.cm-host .cm-md-h6{font-size:var(--fs-base);color:var(--c-text-2)}.cm-host .cm-md-strong{font-weight:600;color:var(--c-text)}.cm-host .cm-md-em{font-style:italic}.cm-host .cm-md-strike{color:var(--c-text-muted);text-decoration:line-through}.cm-host .cm-md-inlinecode{font-family:var(--font-mono);font-size:.9em;padding:1px 5px;border-radius:var(--r-xs);background:var(--c-surface-inset)}.cm-host .cm-md-link{color:var(--c-accent);text-decoration:underline;text-underline-offset:2px}.cm-host .cm-md-imgalt{color:var(--c-text-muted)}.cm-host .cm-md-quote{padding-left:0;border-left:3px solid var(--c-border-strong);color:var(--c-text-2)}.cm-host .cm-md-quotemark{visibility:hidden}.cm-host .cm-md-quote-cont{padding-left:.92em}.cm-host .cm-md-codeline{font-family:var(--font-mono);font-size:var(--fs-sm);line-height:1.6;background:var(--c-surface-inset)}.cm-host .cm-md-codetext{font-family:var(--font-mono)}.cm-host .cm-md-bullet{color:var(--c-text-muted);padding-right:0}.cm-host .cm-md-listmark{color:var(--c-text-2);font-variant-numeric:tabular-nums}.cm-host .cm-md-taskmark{color:var(--c-text-muted)}.cm-host .cm-md-task{appearance:none;width:15px;height:15px;margin:0 6px 0 2px;vertical-align:-2px;border:1.5px solid var(--c-border);border-radius:4px;background:transparent;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard)}.cm-host .cm-md-task:hover{border-color:var(--c-accent)}.cm-host .cm-md-task:checked{background:var(--c-success);border-color:var(--c-success)}.cm-host .cm-md-task:checked:after{content:"";display:block;width:3px;height:7px;margin:0 auto;border:solid var(--c-text-inverse);border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}.cm-host .cm-md-img{display:block;padding:.4em 0}.cm-host .cm-md-img img{display:block;max-width:100%;border-radius:var(--r-md)}.cm-host .cm-md-hr{display:block;height:1px;padding:1.2em 0;background:var(--c-border);background-clip:content-box}.editor-stats{display:flex;align-items:center;gap:10px;margin-left:auto}.save-status{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--c-text-muted)}.save-status .pt{width:10px;height:10px;border-radius:var(--r-full);background:var(--c-neutral);flex:0 0 auto}.save-status.saved .pt{background:var(--c-success)}.save-status.error .pt{background:var(--c-danger)}.save-status.saved.pulse .pt{animation:pulse-dot var(--dur-slow) var(--ease-standard)}.save-status.error{color:var(--c-danger-text)}.save-status button{color:var(--c-accent);font-size:var(--fs-xs)}@keyframes pulse-dot{0%{box-shadow:0 0 0 0 var(--c-success-subtle)}to{box-shadow:0 0 0 6px transparent}}.todo-wrap{flex:1 1 auto;min-height:0;overflow:auto}.todo-table{width:100%;border-collapse:collapse;font-size:var(--fs-base);table-layout:fixed}.todo-table thead th{position:sticky;top:0;z-index:3;height:40px;padding:0 12px;background:var(--c-surface-2);border-bottom:1px solid var(--c-border);color:var(--c-text-muted);font-size:var(--fs-xs);font-weight:600;text-align:left;white-space:nowrap}.col-resizer{position:absolute;top:0;right:-4px;bottom:0;width:9px;z-index:5;cursor:col-resize;touch-action:none}.col-resizer:after{content:"";position:absolute;top:22%;bottom:22%;right:4px;width:2px;border-radius:var(--r-full);background:var(--c-border);opacity:0;transition:opacity var(--dur-fast) var(--ease-standard)}.col-resizer:hover:after,.col-resizer:focus-visible:after,.col-resizer.dragging:after{opacity:1;background:var(--c-accent)}.col-resizer:focus-visible{outline:2px solid var(--c-accent);outline-offset:-2px;border-radius:var(--r-xs)}.todo-table tbody tr{height:44px;position:relative}.todo-table tbody tr+tr td{border-top:1px solid var(--c-border)}.todo-table tbody tr:hover{background:var(--c-surface-2)}.todo-table tbody tr.done{background:var(--c-success-subtle)}.todo-table tbody tr.done td:first-child{box-shadow:inset 3px 0 0 var(--c-success)}.todo-table td{padding:4px 12px;vertical-align:middle}.todo-table td.c-state{text-align:center}.todo-table td.c-prio .prio-select,.todo-table td.c-prog .prog-cell{max-width:100%}.todo-table td.c-note{color:var(--c-text-muted)}.todo-table td.c-ops{text-align:right}.todo-text{font-size:var(--fs-base);font-family:inherit;color:var(--c-text);width:100%;padding:4px 6px;border-radius:var(--r-xs);transition:background-color var(--dur-fast) var(--ease-standard)}textarea.todo-text{display:block;resize:none;overflow:hidden;line-height:1.55;min-height:28px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}.todo-text:hover{background:var(--c-surface-inset)}.todo-text:focus{background:var(--c-surface-inset);box-shadow:0 0 0 2px var(--c-accent-subtle)}tr.done td.c-text .todo-text{color:var(--text-done);text-decoration:line-through;text-decoration-thickness:1.5px;text-decoration-color:color-mix(in srgb,var(--c-text) 70%,transparent)}.todo-row-ops{display:inline-flex;gap:2px;opacity:0;transition:opacity var(--dur-fast) var(--ease-standard)}.todo-table tbody tr:hover .todo-row-ops,.todo-table tbody tr:focus-within .todo-row-ops{opacity:1}.prio-select{height:26px;padding:0 22px 0 8px;border-radius:var(--r-xs);font-size:var(--fs-2xs);font-weight:600;background:var(--c-surface-3);color:var(--c-text-2);border:1px solid var(--c-border);cursor:pointer;appearance:none}.prio-select.p0{background:var(--c-danger-subtle);color:var(--c-danger-text);border-color:transparent}.prio-select.p1{background:var(--c-warning-subtle);color:var(--c-warning-text);border-color:transparent}.prio-select.p2{background:var(--c-info-subtle);color:var(--c-info-text);border-color:transparent}.prog-cell{display:flex;align-items:center;gap:6px}.prog-pct{appearance:none;-moz-appearance:textfield;font-size:var(--fs-2xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums;width:38px;padding:0;text-align:right;flex:0 0 auto}.prog-pct::-webkit-outer-spin-button,.prog-pct::-webkit-inner-spin-button{appearance:none;margin:0}.todo-toolbar{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.todo-progress-label{font-size:var(--fs-xs);color:var(--c-text-muted);font-variant-numeric:tabular-nums}@media (max-width: 767px){.content-body{padding-bottom:0}.todo-table td,.todo-table thead th{padding-left:8px;padding-right:8px}}.menu{position:fixed;z-index:70;min-width:176px;padding:5px;background:var(--c-surface-3);border:1px solid var(--c-border);border-radius:var(--r-md);box-shadow:var(--sh-md);animation:menu-in var(--dur-base) var(--ease-decelerate);display:flex;flex-direction:column;gap:1px}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}}.menu-item{display:flex;align-items:center;gap:10px;height:30px;padding:0 10px;border-radius:var(--r-sm);color:var(--c-text-2);font-size:var(--fs-sm);text-align:left;width:100%}.menu-item:hover{background:var(--c-surface-2);color:var(--c-text)}.menu-item.danger{color:var(--c-danger-text)}.menu-item.danger:hover{background:var(--c-danger-subtle)}.menu-item:disabled{opacity:.4;cursor:not-allowed}.menu-ico-gap{width:15px;flex:0 0 auto}.trash-item{display:flex;align-items:center;gap:10px;height:40px;padding:0 8px;border-radius:var(--r-sm)}.trash-item:hover{background:var(--c-surface-2)}.trash-item .ti-main{flex:1 1 auto;min-width:0}.trash-item .ti-name{font-size:var(--fs-base);color:var(--c-text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trash-item .ti-time{font-size:var(--fs-2xs);color:var(--c-text-muted)}.trash-item .ti-ops{display:flex;gap:2px;flex:0 0 auto}.outline{display:none;flex-direction:column;flex:0 0 auto;width:260px;min-width:240px;border-left:1px solid var(--c-border);background:var(--c-surface)}.outline-head{height:40px;display:flex;align-items:center;padding:0 8px 0 16px;border-bottom:1px solid var(--c-border);font-size:var(--fs-sm);font-weight:600}.outline-body{flex:1 1 auto;overflow:auto;padding:8px}.outline-item{display:block;width:100%;text-align:left;padding:4px 8px;border-radius:var(--r-xs);font-size:var(--fs-sm);color:var(--c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.outline-item:hover{background:var(--c-surface-2);color:var(--c-text)}.outline-item.lv2{padding-left:20px}.outline-item.lv3{padding-left:32px}.outline-item.lv4{padding-left:44px}.markdown-body{font-family:var(--font-sans);font-size:var(--fs-md);line-height:1.75;color:var(--c-text);max-width:760px;margin:0 auto;padding:24px;word-wrap:break-word}.markdown-body>*:first-child{margin-top:0}.markdown-body>*:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{line-height:1.4;margin:1.6em 0 .5em;font-weight:600;letter-spacing:-.01em}.markdown-body h1{font-size:var(--fs-2xl)}.markdown-body h2{font-size:var(--fs-xl);padding-bottom:.3em;border-bottom:1px solid var(--c-border)}.markdown-body h3{font-size:var(--fs-lg)}.markdown-body h4{font-size:var(--fs-md)}.markdown-body h5,.markdown-body h6{font-size:var(--fs-base);color:var(--c-text-2)}.markdown-body p{margin:0 0 .9em}.markdown-body ul,.markdown-body ol{margin:0 0 .9em;padding-left:1.6em}.markdown-body li{margin:.2em 0}.markdown-body li>ul,.markdown-body li>ol{margin:.2em 0}.markdown-body a{color:var(--c-accent);text-decoration:underline;text-underline-offset:2px}.markdown-body a:hover{color:var(--c-accent-hover)}.markdown-body strong{font-weight:600}.markdown-body code{font-family:var(--font-mono);font-size:.9em;background:var(--c-surface-inset);border-radius:var(--r-xs);padding:1px 5px}.markdown-body pre{background:var(--c-surface-inset);border-radius:var(--r-md);padding:12px 16px;overflow:auto;margin:0 0 .9em;font-size:var(--fs-sm);line-height:1.6}.markdown-body pre code{background:none;padding:0;font-size:inherit}.markdown-body blockquote{margin:0 0 .9em;padding-left:16px;border-left:3px solid var(--c-border-strong);color:var(--c-text-2)}.markdown-body blockquote>*:last-child{margin-bottom:0}.markdown-body hr{border:none;border-top:1px solid var(--c-border);margin:1.6em 0}.markdown-body table{border-collapse:collapse;width:100%;margin:0 0 .9em;font-size:var(--fs-sm)}.markdown-body th,.markdown-body td{border:1px solid var(--c-border);padding:6px 12px;text-align:left}.markdown-body th{background:var(--c-surface-2);font-weight:600}.markdown-body img{max-width:100%;border-radius:var(--r-md);cursor:zoom-in;display:block;margin:.4em 0}.markdown-body img.broken{display:inline-flex;min-height:60px;border:1px dashed var(--c-border-strong);background:var(--c-surface-inset)}.markdown-body .img-fallback{display:inline-flex;align-items:center;gap:8px;padding:12px 14px;border:1px dashed var(--c-border-strong);border-radius:var(--r-md);color:var(--c-text-muted);font-size:var(--fs-xs);margin:.4em 0}.markdown-body li input[type=checkbox]{margin-right:6px;accent-color:var(--c-success)}.preview-empty{color:var(--c-text-faint);font-size:var(--fs-sm);padding:24px;text-align:center}.editor-col.preview-col .markdown-body{padding:20px 24px 60px}
