:root{--bg:#f5f6f8;--surface:#fff;--surface-2:#f0f2f5;--border:#e1e4e9;--border-strong:#cdd2da;--text:#1f2328;--text-muted:#646b75;--text-done:#9aa0a8;--accent:#2f6fd0;--accent-text:#fff;--accent-soft:#e8f0fc;--danger:#c0392b;--danger-soft:#fbeceb;--focus:#2f6fd0;--star:var(--accent);--overdue:#9a5a12;--shadow:0 1px 2px #141e320d;--shadow-pop:0 8px 28px #141e3229;--radius:8px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#1b1d21;--surface:#24272c;--surface-2:#2c3036;--border:#353a41;--border-strong:#464c55;--text:#e6e8eb;--text-muted:#9aa1ab;--text-done:#6d737c;--accent:#6a9ff0;--accent-text:#10151d;--accent-soft:#263349;--danger:#e0716a;--danger-soft:#3a2624;--focus:#6a9ff0;--star:var(--accent);--overdue:#dca465;--shadow:none;--shadow-pop:0 8px 28px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:Segoe UI Variable Text,Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.45}h1,h2,p{margin:0}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:1px}.muted{color:var(--text-muted)}.small{font-size:12px}.block{margin-top:6px;display:block}.center{min-height:calc(100vh / var(--app-zoom,1));place-items:center;padding:24px;display:grid}.app{height:calc(100vh / var(--app-zoom,1));flex-direction:column;display:flex}.app-header{z-index:10;flex-shrink:0}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:24px;height:48px;padding:0 20px;display:flex}.app-name{font-size:15px;font-weight:600}.tabs{gap:4px;height:100%;display:flex}.tab{cursor:pointer;color:var(--text-muted);background:0 0;border:0;border-bottom:2px solid #0000;padding:0 12px}.tab:hover{color:var(--text)}.tab-active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.main{--pad-top:24px;--pad-x:20px;overflow-anchor:none;padding:var(--pad-top) var(--pad-x) 64px;flex:1;overflow-y:auto}.page{max-width:880px;margin:0 auto}.page-wide{max-width:1100px}.page-header,.week-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.page-title{flex-wrap:wrap;align-items:center;gap:10px;font-size:22px;font-weight:600;display:flex}.week-nav{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.nav-group{gap:4px;display:inline-flex}.btn-icon-only{padding:0 8px}.overview-toolbar{top:calc(-1 * var(--pad-top));z-index:6;margin:calc(-1 * var(--pad-top)) calc(-1 * var(--pad-x)) 8px;padding:20px var(--pad-x) 12px;background:var(--bg);border-bottom:1px solid #0000;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex;position:sticky}.sentinel{height:1px}.notice{background:var(--accent-soft);border-radius:var(--radius);flex-wrap:wrap;flex-basis:100%;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.tiles{grid-template-columns:repeat(auto-fill, minmax(min(var(--tile-min,220px), 100%), 1fr));gap:10px;display:grid}.overview-year{color:var(--text-muted);border-bottom:1px solid var(--border);grid-column:1/-1;margin:14px 0 0;padding-bottom:4px;font-size:15px;font-weight:600}.overview-year:first-child{margin-top:0}.tile{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-height:118px;box-shadow:var(--shadow);cursor:pointer;flex-direction:column;gap:4px;padding:12px 14px;transition:border-color .15s,box-shadow .3s;display:flex}.tile:hover{border-color:var(--border-strong)}.tile-current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tile-current:hover{border-color:var(--accent)}.tile-flash{box-shadow:0 0 0 3px var(--accent-soft), 0 0 0 1px var(--accent)}.tile-head{justify-content:space-between;align-items:center;gap:6px;display:flex}.tile-title{font-size:15px;font-weight:600}.tile-range{color:var(--text-muted);font-size:13px}.tile-past .tile-title{color:var(--text-muted)}.tile-stats{margin-top:auto;font-size:13px}.tile-empty{color:var(--text-muted);margin-top:auto;font-size:13px}.tile .progress{margin-top:2px}.tile-flags{gap:10px;font-size:12px;display:flex}.tile-star{color:var(--star);font-weight:600}.tile-past .tile-star{color:var(--text-muted)}.tile-overdue{color:var(--overdue)}.tile-dots{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.tile-dots .color-dot{width:8px;height:8px}.popover-wrap{position:relative}.popover{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-pop);padding:10px;position:absolute;top:calc(100% + 4px)}.popover-right{right:0}.popover-left{left:0}.weekcal{width:340px;max-width:calc(100vw / var(--app-zoom,1) - 48px);flex-direction:column;gap:8px;display:flex}.weekcal-head{align-items:center;gap:2px;display:flex}.weekcal-title{text-align:center;flex:1;font-weight:600}.weekcal-grid{flex-direction:column;gap:2px;display:flex}.weekcal-row{text-align:center;grid-template-columns:34px repeat(7,1fr);align-items:center;font-size:13px;display:grid}.weekcal-labels{color:var(--text-muted);padding:2px 0;font-size:12px}.weekcal-week{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;height:28px;padding:0}.weekcal-week:hover{background:var(--surface-2)}.weekcal-week.is-current{border-color:var(--border-strong)}.weekcal-week.is-selected{background:var(--accent-soft);border-color:var(--accent)}.weekcal-kw{color:var(--text-muted);font-size:12px;font-weight:600}.weekcal-out{color:var(--text-done)}.weekcal-today{color:var(--accent);font-weight:700}.weekcal-info{color:var(--text-muted);text-align:center;font-size:13px}.weekcal-info strong{color:var(--text)}.weekcal-foot{border-top:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:8px;padding-top:8px;display:flex}.kw-input{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;font-size:13px;display:flex}.kw-input label{align-items:center;gap:4px;display:inline-flex}.kw-input .input{text-align:center;width:40px;height:28px;padding:0 6px}.kw-input .input-year{width:56px}.kw-error{text-align:right;width:100%}.testbar{background:var(--surface-2);border-bottom:1px solid var(--border);color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px;padding:5px 20px;font-size:12px;display:flex}.testbar-active{color:#6b5200;background:#fff4d6}@media (prefers-color-scheme:dark){.testbar-active{color:#e8d39a;background:#3a3220}}.testbar-sep{opacity:.6}.testbar .testbar-input{flex:none;width:140px;height:26px;font-size:12px}.testbar .btn-small{height:26px;font-size:12px}.banner{padding:10px 20px;font-size:13px}.banner-error{background:var(--danger-soft);color:var(--danger)}.btn{border:1px solid var(--border-strong);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:6px;height:32px;padding:0 12px;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.08)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger);filter:brightness(1.08)}.btn-ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){color:var(--text)}.btn-small{height:28px;padding:0 10px;font-size:13px}.btn-link{color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0 4px;font-weight:600}.icon-btn{width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;flex-shrink:0;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--surface-2);color:var(--text)}.icon-btn-danger:hover{color:var(--danger);background:var(--danger-soft)}.input{border:1px solid var(--border-strong);background:var(--surface);border-radius:6px;width:100%;height:32px;padding:0 10px}.input:focus{outline:2px solid var(--focus);outline-offset:-1px;border-color:#0000}select.input{padding-right:4px}.input-short{max-width:140px}.input-inline{flex:1;min-width:0;height:28px}.badge{border:1px solid var(--border-strong);color:var(--text-muted);border-radius:999px;padding:1px 7px;font-size:12px;font-weight:500;line-height:1.5;display:inline-block}.badge-current{background:var(--accent-soft);color:var(--accent);border-color:#0000}.color-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.week-summary{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:6px;margin-bottom:16px;padding:12px 16px;display:flex}.progress{background:var(--surface-2);border-radius:2px;height:4px;overflow:hidden}.progress-bar{background:var(--accent);border-radius:2px;height:100%;transition:width .25s}.module{--module-color:var(--accent);background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--module-color);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:12px}.module-inactive{border-left-style:dashed}.module-header{justify-content:space-between;align-items:center;gap:12px;padding:8px 14px 6px 8px;display:flex}.module-toggle{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;min-width:0;padding:4px 6px;display:flex}.module-toggle:hover{background:var(--surface-2)}.chevron{color:var(--text-muted);flex-shrink:0;transition:transform .15s}.chevron-collapsed{transform:rotate(-90deg)}.module-name{overflow-wrap:anywhere;font-size:15px;font-weight:600}.module-short{color:var(--module-color,var(--text-muted));margin-left:6px;font-size:12px;font-weight:600}.module-progress{color:var(--text-muted);white-space:nowrap;font-size:13px}.progress-module{height:3px;margin:0 14px 4px}.progress-module .progress-bar{background:var(--module-color)}.module-body{padding:2px 8px 8px}.module-empty{padding:6px 8px;font-size:13px}.task-list{margin:0;padding:0;list-style:none}.task{background:var(--surface);border-radius:6px;position:relative}.task:hover,.task:focus-within{background:var(--surface-2)}.task.dragging{z-index:5;box-shadow:var(--shadow-pop);position:relative}.task-row{align-items:flex-start;gap:6px;min-height:34px;padding:3px 4px;display:flex}.drag-handle{cursor:grab;opacity:0;touch-action:none;width:20px}.task:hover .drag-handle,.task:focus-within .drag-handle,.module-row .drag-handle{opacity:.7}.drag-handle:active{cursor:grabbing}.checkbox{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;margin:6px 4px 0 0}.task-main{flex-direction:column;flex:1;min-width:0;padding:4px 0;display:flex}.task-main .input-inline{margin:-2px 0}.task-title{overflow-wrap:anywhere;white-space:pre-wrap}.task-meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:1px;font-size:12px;display:flex}.keep-badge{border:1px solid var(--border-strong);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:4px;padding:0 7px;font-size:12px;line-height:18px;display:inline-flex}.keep-badge:hover{color:var(--text);border-color:var(--text-muted)}.task-selectable .task-row{cursor:pointer;padding-left:8px}.task-selected,.task-selected:hover{background:var(--accent-soft)}.select-box{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex-shrink:0;margin:6px 6px 0 0}.module-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.module-actions .add-task-wrap{flex:1}.module-tools{flex-wrap:wrap;gap:2px;margin-left:auto;display:flex}.picker-tools{align-items:center;gap:6px;display:flex}.picker-manage{margin-left:auto}.picker-list{border:1px solid var(--border);border-radius:var(--radius);max-height:46vh;margin:0;padding:0;list-style:none;overflow-y:auto}.picker-list:empty{display:none}.picker-list li+li{border-top:1px solid var(--border)}.picker-item{cursor:pointer;align-items:flex-start;gap:10px;padding:8px 12px;display:flex}.picker-item:hover{background:var(--surface-2)}.picker-item input{accent-color:var(--accent);flex-shrink:0;margin-top:3px}.picker-item input:disabled{cursor:default}.picker-title{overflow-wrap:anywhere;flex:1;min-width:0}.picker-item-present .picker-title{color:var(--text-muted)}.picker-title-done{text-decoration:line-through;-webkit-text-decoration-color:var(--text-done);text-decoration-color:var(--text-done)}.plain-list{margin:0;padding-left:18px}.tpl-manager{flex-direction:column;gap:8px;display:flex}.tpl-list{border:1px solid var(--border);border-radius:var(--radius);max-height:46vh;margin:0;padding:0;list-style:none;overflow-y:auto}.tpl-row{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:6px;padding:4px 6px;display:flex}.tpl-row:last-child{border-bottom:0}.tpl-row .drag-handle{opacity:.7}.tpl-row.dragging{z-index:5;box-shadow:var(--shadow-pop);position:relative}.tpl-title{overflow-wrap:anywhere;flex:10em;min-width:0}.tpl-row{flex-wrap:wrap}.tpl-suggest{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.tpl-day{width:auto;height:28px;padding:0 4px;font-size:12px}.tpl-time{width:92px;height:28px;font-size:12px}.tpl-time:disabled{opacity:.5}.tpl-suggestion{white-space:nowrap}.selection-bar{background:var(--surface-2);border-radius:6px;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px;padding:6px 8px;display:flex}.selection-count{margin-right:auto}.quick-weeks{flex-wrap:wrap;gap:6px;display:flex}.btn-selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.btn-selected:hover:not(:disabled){background:var(--accent-soft)}.move-calendar{border:1px solid var(--border);border-radius:var(--radius);justify-content:center;padding:6px;display:flex}.move-target{background:var(--surface-2);border-radius:6px;padding:8px 10px;font-size:13px}.move-target-past{color:#6b5200;background:#fff4d6}@media (prefers-color-scheme:dark){.move-target-past{color:#e8d39a;background:#3a3220}}.task-done .task-title{color:var(--text-done);text-decoration:line-through}.task-actions{flex-shrink:0;gap:2px;display:flex}.star-btn{color:var(--border-strong)}.star-btn:hover{color:var(--star);background:var(--surface-2)}.star-on{color:var(--star)}.task-important .task-title{font-weight:600}.task-done .star-on{color:var(--text-done)}.task-done.task-important .task-title{font-weight:400}.drag-placeholder{flex-shrink:0;width:20px;display:inline-block}.done-toggle{color:var(--text-muted);margin:2px 0 0 26px}.done-toggle svg{opacity:.7}.module-hint{margin-left:4px;font-weight:400}.notice-block{margin-bottom:12px}.module-list-fixed{margin-bottom:10px}.task-action-hidden{opacity:0}.task:hover .task-action-hidden,.task:focus-within .task-action-hidden,.task-action-hidden[aria-expanded=true]{opacity:1}.has-note{color:var(--text-muted)}.note-editor{flex-direction:column;gap:4px;padding:0 8px 8px 58px;display:flex}.note-input{resize:vertical;height:auto;padding:6px 10px;line-height:1.4}.add-task{margin-top:2px}.add-task-row{align-items:center;gap:6px;padding:4px 4px 0 30px;display:flex}.menu-wrap{position:relative}.menu{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:230px;max-height:60vh;box-shadow:var(--shadow-pop);padding:4px;position:absolute;top:100%;right:0;overflow:auto}.menu-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;width:100%;padding:6px 10px;display:flex}.menu-item:hover,.menu-item:focus-visible{background:var(--surface-2);outline:none}.menu-item-danger{color:var(--danger)}.menu-label{color:var(--text-muted);align-items:center;gap:6px;padding:6px 10px 4px;font-size:12px;display:flex}.menu-empty{color:var(--text-muted);padding:4px 10px 6px;font-size:13px}.menu-sep{background:var(--border);height:1px;margin:4px 0}.module-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin:0;padding:0;list-style:none}.module-row{border-bottom:1px solid var(--border);background:var(--surface);align-items:center;gap:10px;padding:10px 12px 10px 6px;display:flex}.module-row:first-child{border-radius:var(--radius) var(--radius) 0 0}.module-row:last-child{border-radius:0 0 var(--radius) var(--radius);border-bottom:0}.module-row.dragging{z-index:5;box-shadow:var(--shadow-pop);position:relative}.module-row-inactive .module-row-name{color:var(--text-muted)}.module-row-main{flex-direction:column;flex:1;min-width:0;display:flex}.module-row-name{overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:6px;font-weight:600;display:flex}.module-row-name .module-short{color:var(--text-muted);margin-left:0}.row-actions{align-items:center;gap:4px;display:flex}.help-btn{border:1px solid var(--border-strong);border-radius:50%;margin-left:auto;font-weight:600}.shortcuts{border-collapse:collapse;width:100%}.shortcuts th,.shortcuts td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:6px 0}.shortcuts th{white-space:nowrap;padding-right:16px;font-weight:400}kbd{border:1px solid var(--border-strong);background:var(--surface-2);border-bottom-width:2px;border-radius:4px;padding:2px 6px;font-family:inherit;font-size:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:10px;margin-bottom:14px;padding:16px 18px;display:flex}.card-title{font-size:15px;font-weight:600}.card-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.facts{grid-template-columns:max-content 1fr;gap:4px 16px;margin:0;display:grid}.facts dt{color:var(--text-muted)}.facts dd{overflow-wrap:anywhere;margin:0}.path{font-family:Cascadia Mono,Consolas,monospace;font-size:13px}.backup-list{border:1px solid var(--border);border-radius:var(--radius);max-height:320px;margin:0;padding:0;list-style:none;overflow-y:auto}.backup-row{align-items:center;gap:10px;padding:8px 12px;display:flex}.backup-row+.backup-row{border-top:1px solid var(--border)}.backup-main{flex-direction:column;flex:1;min-width:0;display:flex}.backup-date{font-weight:600}.alert{border-radius:var(--radius);align-items:flex-start;gap:8px;margin-bottom:14px;padding:10px 12px;display:flex}.alert .icon-btn{flex-shrink:0;margin-left:auto}.alert-error{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger)}.empty{text-align:center;background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius);flex-direction:column;align-items:center;gap:10px;padding:48px 24px;display:flex}.empty .muted{max-width:460px}.empty-title{font-size:16px;font-weight:600}.error-box{background:var(--surface);border:1px solid var(--danger);border-radius:var(--radius);flex-direction:column;gap:10px;max-width:520px;padding:24px;display:flex}.error-box h1{font-size:18px}.dialog{max-width:calc(100vw / var(--app-zoom,1) - 32px);border:1px solid var(--border);background:var(--surface);color:var(--text);box-shadow:var(--shadow-pop);border-radius:10px;padding:0}.dialog::backdrop{background:#0f141e59}.dialog-inner{flex-direction:column;gap:14px;padding:18px 20px;display:flex}.dialog-title{font-size:17px;font-weight:600}.dialog-body{flex-direction:column;gap:10px;display:flex}.dialog-footer{justify-content:flex-end;gap:8px;display:flex}.form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:5px;display:flex}.field-label{font-size:13px;font-weight:600}.field-error{color:var(--danger);font-size:12px}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:50%;width:28px;height:28px;padding:0;position:relative;box-shadow:inset 0 0 0 1px #00000014}.swatch-selected{outline:2px solid var(--text);outline-offset:2px}.swatch-custom{background:var(--surface-2);border:1px dashed var(--border-strong);place-items:center;display:grid;overflow:hidden}.swatch-custom input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.swatch-custom span{width:100%;height:100%;color:var(--text-muted);pointer-events:none;place-items:center;font-size:16px;display:grid}.choice{border:1px solid var(--border);cursor:pointer;border-radius:6px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.choice input[type=radio]{margin-top:3px}.choice-disabled{opacity:.6;cursor:default}.choice>span{flex:1}.confirm-check{color:var(--danger);align-items:flex-start;gap:8px;display:flex}.confirm-check input{margin-top:3px}.toasts{z-index:100;pointer-events:none;width:max-content;max-width:calc(100vw / var(--app-zoom,1) - 32px);flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%)}.toast{pointer-events:auto;color:#f2f3f5;box-shadow:var(--shadow-pop);background:#2b2f36;border-radius:8px;align-items:center;gap:10px;padding:8px 8px 8px 14px;font-size:13px;display:flex}.toast .icon-btn{color:#c3c7ce}.toast .icon-btn:hover{color:#fff;background:#ffffff1a}.toast .btn-link{color:#8db8ff}.toast-error{background:#8f2d25}@media (width<=640px){.main{--pad-top:16px;--pad-x:12px;padding-bottom:48px}.topbar{gap:12px;padding:0 12px}.tab{padding:0 8px}.module-header{flex-wrap:wrap}.add-task-row{flex-wrap:wrap;padding-left:4px}.task:not(:hover):not(:focus-within) .task-action-hidden:not([aria-expanded=true]){display:none}.note-editor{padding-left:8px}}.task-line{flex-wrap:wrap;align-items:flex-start;gap:2px 8px;display:flex}.task-line .task-title{flex:12em;min-width:0}.task-line .input-inline{flex:1}.area-tag{color:var(--text-muted);white-space:nowrap;flex-shrink:0;align-items:center;gap:4px;font-size:12px;display:inline-flex}.area-tag .color-dot{width:8px;height:8px}.sched-chip{border:1px solid var(--border);background:var(--surface);color:var(--text-muted);white-space:nowrap;cursor:pointer;border-radius:999px;flex-shrink:0;margin:-2px 0;padding:0 8px;font-size:12px;line-height:20px}.sched-chip:hover{color:var(--text);border-color:var(--border-strong)}.sched-today{color:var(--accent);border-color:var(--accent-soft);background:var(--accent-soft)}.sched-overdue{color:var(--overdue);background:0 0;border-color:currentColor}.task-done .sched-chip{color:var(--text-done);background:0 0}.overdue-actions{flex-wrap:wrap;gap:2px 12px;display:inline-flex}.overdue-actions .btn-link{white-space:nowrap;padding:0;font-size:12px;font-weight:400}.schedule-pop{width:312px;max-width:calc(100vw / var(--app-zoom,1) - 48px);flex-direction:column;gap:8px;display:flex;top:calc(100% - 2px);right:8px}.sched-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.sched-label{font-weight:600}.sched-quick{gap:6px;display:flex}.sched-days{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.sched-day{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:6px;flex-direction:column;align-items:center;padding:3px 0;line-height:1.2;display:flex}.sched-day:hover{background:var(--surface-2)}.sched-day-name{color:var(--text-muted);font-size:12px}.sched-day.is-past{color:var(--text-muted)}.sched-day.is-today{border-color:var(--border-strong);color:var(--accent);font-weight:700}.sched-day.is-selected,.daycal-day.is-selected{background:var(--accent-soft);border-color:var(--accent)}.sched-more{align-self:flex-start;padding:0;font-weight:400}.sched-time{gap:6px;display:flex}.sched-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:4px;padding-top:6px;display:flex}.daycal{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:4px;padding:6px;display:flex}.daycal-grid{flex-direction:column;gap:2px;display:flex}.daycal-row{text-align:center;grid-template-columns:26px repeat(7,1fr);align-items:center;font-size:13px;display:grid}.daycal-day{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;height:26px;padding:0}.daycal-day:hover{background:var(--surface-2)}.daycal-day.is-today{color:var(--accent);font-weight:700}.add-task-day{flex-shrink:0;width:auto;max-width:140px}.add-task-time{flex-shrink:0;width:96px}.add-task-error{padding:2px 4px 0 30px;display:block}.date-mode{border:0;flex-direction:column;gap:6px;margin:0;padding:0;display:flex}.date-mode legend{margin-bottom:6px;padding:0;font-weight:600}.view-switch{border:1px solid var(--border-strong);background:var(--surface);border-radius:6px;margin-bottom:12px;display:inline-flex;overflow:hidden}.view-switch-btn{height:30px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;padding:0 14px}.view-switch-btn+.view-switch-btn{border-left:1px solid var(--border-strong)}.view-switch-btn:hover{color:var(--text);background:var(--surface-2)}.view-switch-btn.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.days{flex-direction:column;gap:10px;display:flex}.day-section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:10px;padding:6px 8px 6px 6px}.days .day-section{margin-bottom:0}.day-header{align-items:baseline;gap:10px;padding:2px 6px 4px;display:flex}.day-title{font-size:14px;font-weight:600}.day-date{color:var(--text-muted);font-weight:400}.day-count{margin-left:auto}.day-header{align-items:center;min-height:28px}.day-add{width:26px;height:26px}.day-section:not(:hover):not(:focus-within) .day-add{opacity:.5}.day-today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-soft)}.day-today .day-title{color:var(--accent)}.day-past{background:var(--surface-2)}.day-past .day-title,.day-past .task-title{color:var(--text-muted)}.day-past .task-done .task-title{color:var(--text-done)}.day-overdue .day-title{color:var(--overdue)}.day-section.drop-over{outline:2px dashed var(--accent);outline-offset:-2px}.day-actions{padding:2px 0 2px 26px}.day-actions .add-task-wrap,.day-actions .add-task-row{padding-left:0}.day-section .add-task{margin-top:0}.day-empty{margin:2px 0 4px 32px}.day-area+.day-area{margin-top:4px}.day-area-name{color:var(--text-muted);align-items:center;gap:6px;padding:4px 6px 0 32px;font-size:12px;font-weight:600;display:flex}.day-area-name .color-dot{width:8px;height:8px}.day-section .task{background:0 0}.day-section .task:hover,.day-section .task:focus-within{background:var(--surface-2)}.day-past .task:hover,.day-past .task:focus-within{background:var(--surface)}.zoom-group{border:1px solid var(--border-strong);background:var(--surface);border-radius:6px;align-items:center;display:inline-flex}.zoom-group .zoom-btn{border:0;min-width:34px;font-size:18px;line-height:1}.zoom-label{border:0;border-left:1px solid var(--border);border-right:1px solid var(--border);min-width:78px;height:32px;color:var(--text-muted);cursor:pointer;background:0 0;font-size:12px}.zoom-label:hover{color:var(--text)}.tiles-small{gap:6px}.tile-small{gap:2px;min-height:0;padding:7px 9px 8px}.tile-small .tile-title{font-size:13px}.tile-small .tile-range,.tile-small .tile-stats,.tile-small .tile-empty{font-size:12px}.tile-small .badge{padding:0 5px}.tiles-large{gap:12px}.tile-large{padding:14px 16px}.tile-large .tile-title{font-size:17px}.tile-details{flex-direction:column;gap:8px;margin-top:4px;display:flex}.tile-areas{flex-direction:column;gap:3px;margin:0;padding:0;list-style:none;display:flex}.tile-areas li{grid-template-columns:minmax(3em,9em) 1fr auto;align-items:center;gap:8px;font-size:12px;display:grid}.tile-area-name{text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);overflow:hidden}.tile-area-bar{background:var(--surface-2);border-radius:3px;height:6px;overflow:hidden}.tile-area-bar>span{border-radius:3px;height:100%;display:block}.tile-area-count{color:var(--text-muted);font-variant-numeric:tabular-nums}.tile-important{border-top:1px solid var(--border);flex-direction:column;gap:2px;margin:0;padding:6px 0 0;font-size:13px;list-style:none;display:flex}.tile-important li{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.font-scale{border:0;margin:0;padding:0}.font-scale legend{margin-bottom:8px;padding:0;font-weight:600}.font-scale-options{flex-wrap:wrap;gap:8px;display:flex}.font-scale-option{border:1px solid var(--border-strong);cursor:pointer;border-radius:6px;align-items:center;gap:8px;min-height:40px;padding:0 14px;display:inline-flex}.font-scale-option input{accent-color:var(--accent);margin:0}.font-scale-option.is-selected{border-color:var(--accent);background:var(--accent-soft)}.tt{container-type:inline-size}.tt-wrap{grid-template-columns:minmax(0,1fr) 240px;align-items:start;gap:12px;display:grid}@container (width<=1040px){.tt-wrap{grid-template-columns:minmax(0,1fr)}}.tt-scroll{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.tt-grid{grid-template-columns:48px repeat(7,minmax(84px,1fr));min-width:636px;display:grid}.tt-corner,.tt-dayhead{border-bottom:1px solid var(--border)}.tt-dayhead{border-left:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:2px 6px;min-width:0;padding:6px 6px 5px;display:flex}.tt-dayname{font-weight:600}.tt-daydate{color:var(--text-muted);font-size:12px}.tt-dayhead .badge{margin-left:0}.tt-dayhead.tt-today .tt-dayname,.tt-dayhead.tt-today .tt-daydate{color:var(--accent)}.tt-dayhead.tt-today{box-shadow:inset 0 3px 0 var(--accent)}.tt-rowlabel{color:var(--text-muted);border-bottom:1px solid var(--border-strong);padding:5px 4px;font-size:12px;line-height:1.2}.tt-untimed{border-left:1px solid var(--border);border-bottom:1px solid var(--border-strong);flex-direction:column;gap:2px;min-width:0;min-height:30px;padding:3px;display:flex}.tt-past{background:var(--surface-2)}.tt-today:not(.tt-dayhead){background:color-mix(in srgb, var(--accent-soft) 45%, transparent)}.tt-times{position:relative}.tt-time{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:12px;position:absolute;right:6px;transform:translateY(-50%)}.tt-time:first-child{margin-top:2px;transform:none}.tt-day{border-left:1px solid var(--border);background-image:linear-gradient(to bottom, var(--border) 1px, transparent 1px), linear-gradient(to bottom, transparent calc(var(--tt-hour) / 2), color-mix(in srgb, var(--border) 55%, transparent) calc(var(--tt-hour) / 2), transparent calc(var(--tt-hour) / 2 + 1px));background-size:100% var(--tt-hour);min-width:0;position:relative}.tt-block{border:1px solid color-mix(in srgb, var(--tt-color) 35%, var(--border));border-left:3px solid var(--tt-color);background:color-mix(in srgb, var(--tt-color) 12%, var(--surface));border-radius:5px;align-items:flex-start;gap:4px;padding:2px 4px 2px 5px;font-size:12px;line-height:1.25;display:flex;position:absolute;overflow:hidden}.tt-block:hover,.tt-block:focus-within{z-index:1;box-shadow:var(--shadow-pop)}.tt-block-short{align-items:center;padding-top:0;padding-bottom:0}.tt-open{min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;align-items:flex-start;gap:1px;padding:0;display:flex}.tt-open:hover .tt-block-title,.tt-open:hover .tt-chip-title{text-decoration:underline}.tt-block-short .tt-open{white-space:nowrap;flex-direction:row;align-items:baseline;gap:4px}.tt-block:not(.tt-block-short) .tt-open{align-items:stretch}.tt-block-short .tt-block-time{flex:none}.tt-block-time{text-overflow:ellipsis;color:var(--text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden}.tt-block-title{-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word;min-width:0;max-width:100%;font-weight:600;display:block}.tt-block-short .tt-block-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tt-block-title svg{vertical-align:-1px;margin-right:3px;display:inline}.tt-block svg,.tt-chip svg{width:11px;height:11px;color:var(--star);flex:none}.tt-check{flex:none;width:13px;height:13px;margin:1px 0 0}.tt-block-short .tt-check{margin-top:0}.tt-done{opacity:.6}.tt-done .tt-block-title,.tt-done .tt-chip-title{color:var(--text-done);text-decoration:line-through}.tt-block.tt-done{border-left-color:var(--text-done);background:var(--surface-2)}.tt-overdue .tt-block-time,.tt-overdue .tt-chip-day{color:var(--overdue)}.tt-chip{border:1px solid var(--border);border-left:3px solid var(--tt-color);background:var(--surface);border-radius:5px;align-items:center;gap:4px;min-width:0;padding:2px 4px 2px 5px;font-size:12px;line-height:1.25;display:flex}.tt-chip.tt-done{border-left-color:var(--text-done)}.tt-chip .tt-open{flex-direction:row;align-items:baseline;gap:4px;overflow:hidden}.tt-chip-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tt-untimed .tt-chip-title{white-space:normal;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word}.tt-untimed .tt-chip{align-items:flex-start}.tt-untimed .tt-check{margin-top:1px}.tt-block-shared{padding-left:4px;padding-right:2px}.tt-chip-area,.tt-chip-day{color:var(--text-muted);white-space:nowrap;flex:none;margin-left:auto}.tt-side{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:6px 8px 8px}.tt-side-head{justify-content:space-between;align-items:baseline;gap:8px;padding:2px 2px 6px;display:flex}.tt-side-group{flex-direction:column;gap:3px;display:flex}.tt-side-group+.tt-side-group{margin-top:8px}.tt-side-name{color:var(--text-muted);align-items:center;gap:6px;padding:0 2px 1px;font-size:12px;font-weight:600;display:flex}.tt-side-name .color-dot{width:8px;height:8px}.tt-side-overdue .tt-side-name{color:var(--overdue)}.tt-side .tt-open{flex-wrap:wrap}.tt-side .tt-chip-title{white-space:normal;overflow-wrap:break-word}.tt-side .tt-chip-day{flex-basis:100%;margin-left:0;font-size:12px}.tt-side .tt-chip{padding-top:3px;padding-bottom:3px;font-size:13px}.tt-side-empty{margin:2px 2px 0}.tt-dialog-task .task-action-hidden{opacity:1}.tt-dialog-task .task{padding-left:0}.tt-dialog-note{white-space:pre-wrap;margin:8px 0 0}.dialog:has(.tt-dialog-task){margin-top:40px;overflow:visible}.tt-day,.tt-untimed{cursor:copy}.tt-block,.tt-chip{cursor:grab;touch-action:none}.tt-block .tt-open,.tt-chip .tt-open{cursor:pointer}.tt-dragging,.tt-dragging *{cursor:grabbing!important}.tt-lifted{opacity:.35}.tt-over.tt-untimed,.tt-over.tt-side{outline:2px dashed var(--accent);outline-offset:-2px}.tt-preview{z-index:2;border:2px dashed var(--accent);background:color-mix(in srgb, var(--accent-soft) 70%, transparent);color:var(--accent);font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap;border-radius:5px;padding:2px 5px;font-size:12px;font-weight:600;position:absolute;left:2px;right:2px;overflow:hidden}.tt-drag{border:1px solid var(--border-strong);border-left:3px solid var(--tt-color);background:var(--surface);max-width:220px;box-shadow:var(--shadow-pop);cursor:grabbing;border-radius:5px;align-items:center;gap:4px;padding:4px 8px 4px 6px;font-size:12px;font-weight:600;display:flex}.tt-drag svg{width:11px;height:11px;color:var(--star);flex:none}.tt-drag-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tt-side-hint{margin:10px 2px 0}.dialog:has(.tt-create){margin-top:40px}.tt-create .add-task-wrap,.tt-create .add-task-row{padding-left:0}.sync-indicator{color:var(--text-muted);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:4px;margin-left:auto;margin-right:6px;padding:3px 8px;font-size:12px;display:inline-flex}.sync-indicator:hover{border-color:var(--border,#d0d5dc)}.sync-icon{font-size:14px;line-height:1;display:inline-block}.sync-icon.spin{animation:1.2s linear infinite sync-spin}@keyframes sync-spin{to{transform:rotate(360deg)}}.sync-synced .sync-icon{color:var(--text-muted)}.sync-offline{color:var(--overdue,#8a6a3d)}.sync-error{color:var(--danger,#c0392b);border-color:var(--danger,#c0392b)}.sync-paused{color:var(--overdue,#8a6a3d)}.sync-status-text{margin:8px 0}.sync-status-text.sync-error{border:none}.card-subtitle{margin:18px 0 6px;font-size:14px;font-weight:600}.sync-log{max-height:320px;margin:0;padding:0;list-style:none;overflow:auto}.sync-log-item{border-top:1px solid var(--border,#e3e6ea);justify-content:space-between;align-items:flex-start;gap:12px;padding:8px 0;display:flex}.sync-log-item .btn{flex-shrink:0}.sync-indicator+.help-btn{margin-left:0}@supports (height:100dvh){.app{height:calc(100dvh / var(--app-zoom,1))}}.banner-update{background:var(--accent-soft);color:var(--text);justify-content:space-between;align-items:center;gap:12px;display:flex}@media (hover:none) and (pointer:coarse){body{touch-action:manipulation;-webkit-tap-highlight-color:transparent}input,select,textarea{font-size:16px}.task[data-touch] .task-action-hidden:not(.task-more):not([aria-expanded=true]){display:none}.task[data-touch] .task-more{opacity:1}.menu-item{min-height:44px}}.task-row{will-change:auto}.task-row[data-swipe]{border-radius:6px}.task-row[data-swipe=right]{background:var(--accent-soft)}.task-row[data-swipe=left]{background:var(--surface-2)}.topbar-phone{justify-content:space-between;gap:8px}.topbar-phone .app-name{font-size:17px}.bottom-nav{background:var(--surface);border-top:1px solid var(--border);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-shrink:0;display:flex}.bottom-nav-item{min-height:54px;color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:11px;display:flex}.bottom-nav-icon{font-size:20px;line-height:1}.bottom-nav-item.is-active{color:var(--accent);font-weight:600}.fab{right:calc(16px + env(safe-area-inset-right));bottom:calc(72px + env(safe-area-inset-bottom));z-index:30;background:var(--accent);width:56px;height:56px;color:var(--accent-text);box-shadow:var(--shadow-pop);cursor:pointer;border:0;border-radius:50%;font-size:30px;line-height:1;position:fixed}.quick-add{flex-direction:column;gap:12px;display:flex}.quick-add-row{grid-template-columns:3fr 2fr;gap:10px;display:grid}.quick-add-star{align-self:flex-start}.quick-add-star.star-on{color:var(--star);border-color:var(--star)}@media (width<=700px),(height<=500px) and (pointer:coarse){.app-header{padding-top:env(safe-area-inset-top);background:var(--surface)}.topbar{padding-left:calc(12px + env(safe-area-inset-left));padding-right:calc(12px + env(safe-area-inset-right))}.main{--pad-top:12px;--pad-x:12px;padding-left:calc(var(--pad-x) + env(safe-area-inset-left));padding-right:calc(var(--pad-x) + env(safe-area-inset-right));padding-bottom:96px}.testbar{flex-wrap:wrap}.checkbox{width:22px;height:22px}.icon-btn{min-width:36px;min-height:36px}.btn{min-height:40px}.task-row{align-items:center;min-height:44px}.dialog{max-width:100%;max-height:92dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:16px 16px 0 0;margin:auto 0 0;width:100%!important}.dialog-footer{flex-wrap:wrap}.menu{top:auto;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:50;min-width:0;max-height:70dvh;position:fixed}.week-header,.page-header{align-items:flex-start}}@media (hover:none) and (pointer:coarse){.task[data-touch] .task-actions .task-more{opacity:1;display:inline-grid!important}}@media (width<=700px),(height<=500px) and (pointer:coarse){.toasts{bottom:calc(140px + env(safe-area-inset-bottom));align-items:center;width:calc(100% - 24px)}.icon-btn{width:auto;height:auto}}.event-list{margin:0 0 6px;padding:0;list-style:none}.event-item{width:100%;min-height:30px;color:var(--text-muted);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:3px 8px 3px 0;display:flex}.event-item:hover{background:var(--surface-2)}.event-item svg{flex-shrink:0;width:14px;height:14px}.event-bar{border-radius:2px;flex-shrink:0;align-self:stretch;width:3px}.event-time{flex-shrink:0;min-width:5.5em;font-size:12px}.event-title{color:var(--text);text-overflow:ellipsis;font-style:italic;overflow:hidden}.tile-events{color:var(--text-muted);align-items:center;gap:4px;font-size:12px;display:flex}.tile-events svg{width:12px;height:12px}.cal-sources{margin:8px 0;padding:0;list-style:none}.cal-source{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.cal-source-main{cursor:pointer;align-items:flex-start;gap:8px;display:flex}.cal-source-main .color-dot{margin-top:6px}.cal-source-status{display:block}.cal-help{margin-bottom:10px}.cal-help summary{cursor:pointer;color:var(--accent)}.cal-add{flex-direction:column;gap:10px;display:flex}.cal-colors{gap:8px;display:flex}.cal-color{cursor:pointer;border:2px solid #0000;border-radius:50%;width:26px;height:26px}.cal-color.is-selected{border-color:var(--text)}@media (width<=700px){.event-item{min-height:40px}.cal-color{width:34px;height:34px}}.replan-btn{margin-left:auto}.view-switch{align-items:center}.replan{flex-direction:column;gap:10px;display:flex}.replan-range{border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px}.replan-radio{padding:3px 0;display:block}.replan-answer{font-family:ui-monospace,Consolas,monospace;font-size:12px}.replan-head{align-items:center;gap:12px;display:flex}.replan-list{border-top:1px solid var(--border);max-height:45vh;margin:0;padding:0;list-style:none;overflow:auto}.replan-item{border-bottom:1px solid var(--border);padding:6px 0}.replan-item label{align-items:flex-start;gap:8px;display:flex}.replan-item label>span{flex-direction:column;gap:1px;display:flex}.replan-item.has-error strong{color:var(--text-muted)}.replan-when{font-size:12px}.replan-error{color:var(--danger);font-size:12px}.replan-warning{color:var(--overdue);font-size:12px}.study-profile{border:1px solid var(--border);border-radius:var(--radius);margin:10px 0;padding:8px 12px}.study-profile legend{font-weight:600}.study-days{grid-template-columns:1fr;gap:6px;display:grid}.study-day{grid-template-columns:7em 1fr;align-items:center;gap:8px;display:grid}@media (width<=700px){.replan-btn{margin-left:0}.study-day{grid-template-columns:1fr;gap:2px}}.tt-event{z-index:0;border-left:3px solid var(--ev-color,var(--text-muted));background:repeating-linear-gradient(-45deg, color-mix(in srgb, var(--ev-color,#8a929c) 18%, transparent) 0 6px, color-mix(in srgb, var(--ev-color,#8a929c) 8%, transparent) 6px 12px);pointer-events:none;position:absolute;left:0;right:0;overflow:hidden}.tt-event-label{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;padding:1px 4px;font-size:11px;font-style:italic;display:block;overflow:hidden}.tt-event-chip{border-left:3px solid var(--ev-color,var(--text-muted));max-width:100%;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:3px;padding:0 4px;font-size:11px;font-style:italic;display:inline-flex;overflow:hidden}.tt-event-chip svg{flex-shrink:0;width:11px;height:11px}.conflict-btn{color:var(--overdue);border-color:var(--overdue)}.week-tools{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.week-tools .view-switch{margin-bottom:0}.view-switch-btn{white-space:nowrap}@media (width<=700px),(height<=500px) and (pointer:coarse){.main{overflow-x:hidden}.week-tools .view-switch{width:100%;display:flex}.week-tools .view-switch-btn{flex:1;min-height:40px;padding:0 6px}.week-tools .btn{flex:1;justify-content:center}.week-nav{flex-wrap:wrap;gap:6px}.week-header,.week-summary{max-width:100%}}.replan-answer{min-height:120px}
