:root{color-scheme:dark;--bg: #1a1918;--surface: #242321;--border: #3a3835;--text: #ece9e4;--muted: #9b968f;--accent: #D97757;--accent-hover: #E08A6D;--text-dim: #98938c;--on-accent: #1a1918;--accent-soft: rgba(217, 119, 87, .1);--accent-softer: rgba(217, 119, 87, .05);--hover: rgba(236, 233, 228, .05);--hover-strong: rgba(236, 233, 228, .09);--focus-ring: var(--accent);--danger: #e58a7f;--danger-soft: rgba(229, 138, 127, .12);--overlay: rgba(0, 0, 0, .55);--popover-shadow: rgba(0, 0, 0, .35);--chip-accent-bg: transparent;--chip-accent-fg: var(--accent);--chip-light-bg: transparent;--chip-light-fg: var(--text);--chip-grey-bg: transparent;--chip-grey-fg: var(--muted);--chip-blue-bg: rgba(138, 180, 248, .12);--chip-blue-fg: #8ab4f8;--chip-green-bg: rgba(129, 201, 149, .12);--chip-green-fg: #81c995;--chip-amber-bg: rgba(226, 178, 96, .12);--chip-amber-fg: #e2b260;--chip-red-bg: rgba(229, 138, 127, .12);--chip-red-fg: #e58a7f;--chip-indigo-bg: rgba(159, 168, 218, .12);--chip-indigo-fg: #9fa8da;--chip-pink-bg: rgba(240, 145, 184, .12);--chip-pink-fg: #f091b8;--chip-teal-bg: rgba(128, 203, 196, .12);--chip-teal-fg: #80cbc4;--chip-purple-bg: rgba(195, 150, 220, .12);--chip-purple-fg: #c396dc;--font-xs: 11px;--font-sm: 12px;--font-md: 13px;--font-base: 14px;--font-lg: 15px;--font-xl: 17px;--font-touch-field: 16px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--font-base);line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.modal:focus-visible{outline:none}.btn{height:30px;padding:0 12px;border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--text);font-size:var(--font-md);font-weight:500;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}.btn:hover:not(:disabled){background:var(--hover);border-color:var(--accent)}.btn:disabled{color:var(--text-dim)}.icon-btn{width:30px;height:30px;padding:0;display:grid;place-items:center;border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--muted);transition:background .12s,color .12s,border-color .12s}.icon-btn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.icon-btn:hover{background:var(--hover);color:var(--text)}@media(hover:none)and (pointer:coarse){input,textarea{font-size:var(--font-touch-field)!important}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.app{max-width:1320px;min-height:100vh;margin:0 auto;padding:0 24px 40px}.app-header{display:flex;align-items:center;gap:10px;padding:16px 0;border-bottom:1px solid var(--border);margin-bottom:24px}.app-header h1{font-size:var(--font-lg);font-weight:600;letter-spacing:.005em}.app-logo{width:20px;height:20px;fill:none;stroke:var(--accent);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.app-main{display:grid;grid-template-columns:minmax(360px,1fr) minmax(0,640px);gap:32px;align-items:start}.calendar{position:sticky;top:24px;min-width:0}.day-panel{min-width:0}.day-head{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px;min-height:30px;margin-bottom:14px}.day-title{display:flex;align-items:center;gap:10px;min-width:0}.day-heading{font-size:var(--font-xl);font-weight:600;line-height:1.25}.day-today{font-size:var(--font-xs);font-weight:500;color:var(--accent);border:1px solid var(--accent);border-radius:999px;padding:1px 8px}@media(max-width:960px){.app{padding:0 16px 32px}.app-header{margin-bottom:16px}.app-main{grid-template-columns:minmax(0,1fr);gap:24px}.calendar{position:static}.day-panel .module-card{width:100%}}.storage-notice{margin-bottom:16px;padding:10px 14px;border:1px solid var(--danger);border-radius:8px;background:var(--danger-soft);font-size:var(--font-md)}.error-screen{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.error-card{width:100%;max-width:360px;padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.error-card h1{font-size:var(--font-xl);font-weight:600;margin-bottom:8px}.error-card p{color:var(--muted);font-size:var(--font-md);margin-bottom:16px}.toast{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:1100;display:flex;align-items:center;gap:10px;width:max-content;max-width:calc(100vw - 32px);padding:8px 8px 8px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px var(--popover-shadow);font-size:var(--font-md)}.toast-message{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast-undo{flex-shrink:0;border:none;background:transparent;color:var(--accent);font-weight:600;padding:3px 6px;border-radius:6px}.toast-undo:hover{background:var(--accent-soft);color:var(--accent-hover)}.toast-close{flex-shrink:0;width:24px;height:24px;padding:0;display:grid;place-items:center;border:none;border-radius:6px;background:transparent;color:var(--muted)}.toast-close:hover{background:var(--hover);color:var(--text)}.toast-close svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.skeleton{background:var(--surface);border-radius:8px;animation:skeletonPulse 1.4s ease-in-out infinite}.skeleton-brand{width:130px;height:20px}.skeleton-line{width:55%;height:22px;margin-bottom:14px}.skeleton-grid{aspect-ratio:1 / .9;border:1px solid var(--border);border-radius:12px}.skeleton-card{height:96px;border:1px solid var(--border);border-radius:12px}@keyframes skeletonPulse{50%{opacity:.55}}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.cal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:30px;margin-bottom:14px}.cal-title{font-size:var(--font-xl);font-weight:600;line-height:1.25}.cal-nav{display:flex;align-items:center;gap:6px}.cal-grid{border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden}.cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-week+.cal-week{border-top:1px solid var(--border)}.cal-weekday{padding:7px 0;text-align:center;font-size:var(--font-xs);font-weight:500;color:var(--muted)}.cal-day{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:4px;min-width:0;height:78px;padding:6px;border:none;border-radius:0;background:transparent;color:var(--text);text-align:left;transition:background .1s}.cal-day+.cal-day{border-left:1px solid var(--border)}.cal-day:hover{background:var(--hover)}.cal-num{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 4px;border-radius:999px;font-size:var(--font-md);font-variant-numeric:tabular-nums}.cal-day.outside .cal-num{color:var(--text-dim)}.cal-day.outside .cal-progress,.cal-day.outside .cal-ring{opacity:.6}.cal-ring{position:absolute;top:10px;right:8px;width:13px;height:13px}.cal-day.today .cal-num{background:var(--accent);color:var(--on-accent);font-weight:600}.cal-day.selected{box-shadow:inset 0 0 0 2px var(--accent)}.cal-day:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-5px}.cal-progress{display:flex;flex-direction:column;gap:3px;width:100%;min-width:0}.cal-meter{display:block;height:3px;border-radius:2px;background:var(--border);overflow:hidden}.cal-meter>span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .2s ease}.cal-count{display:flex;align-items:center;gap:2px;font-size:var(--font-xs);line-height:1.2;color:var(--muted);font-variant-numeric:tabular-nums}.cal-count svg{width:11px;height:11px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.cal-day.finished,.cal-day.finished:hover{background:var(--accent-soft)}.cal-day.finished .cal-count{color:var(--accent);font-weight:600}.cal-keys{margin-top:10px;font-size:var(--font-xs);line-height:1.9;color:var(--muted)}.cal-keys kbd{display:inline-block;min-width:18px;padding:0 4px;margin-right:2px;border:1px solid var(--border);border-radius:4px;font:inherit;font-size:var(--font-xs);line-height:16px;text-align:center}.cal-keys-sep{margin:0 3px;color:var(--text-dim)}@media(hover:none){.cal-keys{display:none}}@media(max-width:640px){.cal-day{height:62px;padding:4px}.cal-count svg{display:none}.cal-ring{top:8px;right:5px}}.module-card{position:relative;container-type:inline-size;width:min(100%,var(--list-width, 640px));min-width:0;max-width:100%;background:var(--surface);border:1px solid var(--border);border-radius:10px;transition:border-color .2s;overflow:hidden}.lh{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 14px;border-bottom:1px solid var(--border)}.lh-icon{width:22px;height:22px;flex-shrink:0;display:grid;place-items:center;color:var(--accent)}.lh-icon svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.lh-title{font-size:var(--font-lg);font-weight:500;color:var(--text);background:transparent;border:none;outline:none;flex:1;min-width:0;padding:3px 0;border-bottom:1.5px solid transparent;transition:border-color .15s}.lh-title:focus{border-bottom-color:var(--accent)}.lh-title::placeholder{color:var(--muted)}.lh-summary{display:flex;align-items:center;gap:8px;flex-shrink:0;font-size:var(--font-sm);color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.lh-meter{width:64px;height:4px;border-radius:3px;background:var(--border);overflow:hidden}.lh-meter>span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .25s ease}.lh-actions{display:flex;gap:2px;flex-shrink:0}.lh-btn{width:28px;height:28px;padding:0;border-radius:7px;background:transparent;border:none;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:background .12s,color .12s}.lh-btn svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round}.lh-btn:hover:not(:disabled){background:var(--hover);color:var(--text)}.lh-btn.del:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.lh-btn:disabled{color:var(--text-dim);opacity:.6}.task-rows{padding:0}.task-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;column-gap:12px;align-items:start;padding:9px 10px 7px 14px;min-width:0;position:relative;cursor:default;border-top:1px solid var(--border);transition:background .1s}.task-row:first-child{border-top:none}.task-row:hover{background:var(--hover)}.task-row.keyed{background:var(--task-key-bg, transparent);box-shadow:inset 3px 0 0 var(--task-key-fg, transparent)}.tr-check{width:20px;height:20px;margin-top:1px;padding:0;border-radius:50%;border:1.5px solid var(--muted);background:transparent;display:grid;place-items:center;transition:background .15s,border-color .15s,box-shadow .15s}.tr-check svg{width:13px;height:13px;fill:none;stroke:transparent;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;transition:stroke .15s}.tr-check:hover:not(:disabled){border-color:var(--accent-hover)}.tr-check[data-state=todo]:hover:not(:disabled) svg{stroke:var(--accent)}.tr-check[data-state=doing]{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3.5px var(--surface)}.tr-check[data-state=done]{border-color:var(--accent);background:var(--accent)}.tr-check[data-state=done]:hover:not(:disabled){border-color:var(--accent-hover);background:var(--accent-hover)}.tr-check[data-state=done] svg{stroke:var(--on-accent)}.tr-check:disabled{opacity:.5}.tr-body{min-width:0;display:flex;flex-direction:column;gap:1px}.tr-cell{display:block;width:100%;min-width:0;font-size:var(--font-md);color:var(--text);background:transparent;border:none;outline:none;padding:0;cursor:text;caret-color:var(--accent);resize:none;overflow:hidden;line-height:1.45}.tr-cell::placeholder{color:var(--muted)}.tr-main{font-size:var(--font-base);font-weight:500;padding:1px 0 2px;border-bottom:1px solid transparent;transition:border-color .12s}.tr-main:focus{border-bottom-color:var(--accent)}.task-row.done .tr-main{color:var(--text-dim);text-decoration:line-through;text-decoration-color:var(--text-dim)}.tr-meta{display:flex;flex-wrap:wrap;align-items:center;gap:2px 4px;margin-left:-6px;min-width:0}.tr-field{display:inline-flex;align-items:center;gap:5px;min-height:24px;max-width:100%;min-width:0;padding:0 6px;border-radius:6px;font-size:var(--font-sm);color:var(--muted);position:relative;transition:background .12s,color .12s}.tr-field:hover,.tr-field:focus-within{background:var(--hover)}.tr-field svg{width:13px;height:13px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;color:var(--muted)}.tr-field .tr-cell{font-size:var(--font-sm);color:var(--muted);padding:3px 0}.tr-notes-trigger,.tr-due-display,.tr-step-open{display:inline-flex;align-items:center;gap:5px;min-width:0;max-width:280px;border:none;background:transparent;color:inherit;font:inherit;padding:0;white-space:nowrap}.tr-notes-trigger{min-height:24px}.tr-notes-trigger span{overflow:hidden;text-overflow:ellipsis}.tr-notes-trigger[aria-expanded=true]{color:var(--text)}.tr-step-open{min-height:24px;padding:0 6px;border-radius:6px;color:var(--muted);font-size:var(--font-sm);font-variant-numeric:tabular-nums;transition:background .12s,color .12s}.tr-step-open svg{width:13px;height:13px;flex-shrink:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tr-step-open:hover{background:var(--hover)}.tr-step-open.has-steps{color:var(--accent)}.tr-notes-panel{margin:4px 0}.tr-notes-input{display:block;width:100%;min-height:64px;resize:none;overflow:hidden;padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--bg);color:var(--text);caret-color:var(--accent);font-size:var(--font-md);line-height:1.5;outline:none;transition:border-color .12s}.tr-notes-input::placeholder{color:var(--muted)}.tr-notes-input:focus{border-color:var(--accent)}.tr-due-wrap.overdue,.tr-due-wrap.overdue svg{color:var(--danger)}.tr-due-wrap .tr-cell{width:140px}.tr-due-display{min-height:24px}.tr-due-input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;left:0;bottom:0}.tr-due-mode{flex-shrink:0;border:none;background:transparent;color:var(--muted);padding:0 0 0 2px;font-size:var(--font-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;opacity:0;transition:opacity .12s,color .12s}.tr-due-wrap:hover .tr-due-mode,.tr-due-wrap:focus-within .tr-due-mode{opacity:1}.tr-due-mode:hover{color:var(--accent)}.tr-text{cursor:text}.tr-field-label{color:var(--muted);white-space:nowrap}.tr-text .tr-cell{width:120px;field-sizing:content;min-width:3ch;max-width:260px}.tr-side{display:flex;align-items:center;gap:2px}.tr-badge{display:inline-flex;align-items:center;gap:2px;border:1px solid color-mix(in srgb,var(--chip-fg, var(--muted)) 40%,transparent);font-size:var(--font-xs);font-weight:500;line-height:1.45;padding:2px 4px 2px 9px;margin-right:2px;border-radius:999px;white-space:nowrap;flex-shrink:0;background:var(--chip-bg, transparent);color:var(--chip-fg, var(--muted));transition:background .12s,border-color .12s}.tr-badge[data-stage=done]{border-color:var(--chip-fg, var(--accent))}.tr-badge svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;opacity:.65}.tr-badge:hover{border-color:var(--chip-fg, var(--muted))}.tr-key-btn,.tr-del{width:24px;height:24px;padding:0;flex-shrink:0;border-radius:7px;border:none;background:transparent;color:var(--muted);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .12s,background .12s,color .12s}.tr-key-btn svg{width:13px;height:13px;fill:var(--key-dot, none);stroke:var(--key-dot, currentColor);stroke-width:1.9;stroke-linejoin:round;stroke-linecap:round}.tr-del svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.tr-key-btn:hover{background:var(--hover);color:var(--text)}.tr-del:hover{background:var(--danger-soft);color:var(--danger)}.task-row:hover .tr-del,.task-row:focus-within .tr-del,.task-row:hover .tr-key-btn,.task-row:focus-within .tr-key-btn,.task-row.keyed .tr-key-btn,.tr-key-btn:focus-visible,.tr-del:focus-visible{opacity:1}@container (max-width: 460px){.task-row{grid-template-columns:20px minmax(0,1fr)}.tr-side{grid-column:2;margin:4px 0 0 -2px}.lh{flex-wrap:wrap}.lh-title{flex-basis:0}.lh-summary{order:3;width:100%}.lh-meter{flex:1}}@media(hover:none){.task-row .tr-del,.task-row .tr-key-btn,.task-row .tr-due-mode,.step-del{opacity:1}}.add-task-row{width:100%;border:none;border-top:1px solid var(--border);text-align:left;display:flex;align-items:center;gap:8px;padding:10px 14px 11px;color:var(--muted);font-size:var(--font-md);transition:background .12s,color .12s;background:transparent}.task-rows:empty+.add-task-row{border-top:none}.add-task-row:hover{background:var(--accent-softer);color:var(--accent)}.add-task-row svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;flex-shrink:0}.tr-badge:focus-visible,.tr-check:focus-visible,.tr-notes-trigger:focus-visible,.tr-due-display:focus-visible,.tr-due-mode:focus-visible,.tr-key-btn:focus-visible,.tr-step-open:focus-visible,.tr-del:focus-visible,.lh-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:1px;opacity:1}.add-task-row:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-3px}.status-dropdown{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px var(--popover-shadow);z-index:1000;min-width:130px;padding:4px}.status-dropdown button{display:block;width:100%;text-align:left;border:none;border-radius:5px;background:none;padding:6px 10px;font-size:var(--font-md);color:var(--text)}.status-dropdown button:hover{background:var(--hover-strong)}.status-dropdown button:focus-visible{background:var(--hover-strong);outline:2px solid var(--focus-ring);outline-offset:-2px}.status-dropdown button[aria-checked=true]{color:var(--accent);font-weight:500}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:900;display:flex;align-items:center;justify-content:center}.modal{background:var(--surface);border:1px solid var(--border);border-radius:10px;max-width:calc(100vw - 32px);display:flex;flex-direction:column;overflow:hidden;animation:modalIn .15s ease-out both}@keyframes modalIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.steps-modal{width:500px;max-height:82vh}.settings-modal{width:480px;max-height:86vh}.mh{padding:18px 20px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.mh-top{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px}.mh-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--accent)}.mh-icon svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.mh-close svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.mh-info{flex:1;min-width:0}.mh-name{font-size:var(--font-lg);font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mh-sub{font-size:var(--font-sm);color:var(--muted);margin-top:2px}.mh-close{width:30px;height:30px;padding:0;border-radius:7px;background:transparent;border:none;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:background .12s,color .12s;flex-shrink:0}.mh-close:hover{background:var(--hover);color:var(--text)}.prog-bar{height:4px;background:var(--border);border-radius:4px;overflow:hidden}.prog-fill{height:100%;background:var(--accent);border-radius:4px;transition:width .25s}.prog-lbl{font-size:var(--font-xs);color:var(--muted);margin-top:4px}.ms-head{padding:12px 20px 8px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.ms-head span{font-size:var(--font-md);font-weight:500;color:var(--text)}.ms-add{font-size:var(--font-sm);font-weight:500;background:transparent;color:var(--accent);border:1px solid var(--border);border-radius:7px;padding:4px 11px;transition:background .12s,border-color .12s,color .12s}.ms-add:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-hover)}.steps-body{flex:1;overflow-y:auto;padding:0 20px 16px}.step-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}.step-row:last-child{border-bottom:none}.step-num{font-size:var(--font-xs);font-weight:500;color:var(--muted);width:18px;flex-shrink:0;text-align:right;padding-top:3px}.step-cb{width:16px;height:16px;margin:2px 0 0;border:1.5px solid var(--muted);border-radius:50%;-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;flex-shrink:0;position:relative;transition:background .15s,border-color .15s;background:transparent}.step-cb:hover{border-color:var(--accent-hover)}.step-cb:checked{background:var(--accent);border-color:var(--accent)}.step-cb:checked:after{content:"";position:absolute;left:4px;top:1px;width:5px;height:9px;border:2px solid var(--on-accent);border-top:none;border-left:none;transform:rotate(45deg)}.step-ta{flex:1;min-width:0;font-size:var(--font-md);color:var(--text);caret-color:var(--accent);background:transparent;border:none;outline:none;padding:1px 0;border-bottom:1.5px solid transparent;resize:none;overflow:hidden;min-height:20px;line-height:1.5;transition:border-color .15s}.step-ta::placeholder{color:var(--muted)}.step-ta:focus{border-bottom-color:var(--accent)}.step-ta.done{color:var(--text-dim);text-decoration:line-through}.step-del{width:24px;height:24px;padding:0;border-radius:6px;background:transparent;border:none;display:flex;align-items:center;justify-content:center;color:var(--muted);opacity:0;flex-shrink:0;transition:opacity .12s,background .12s,color .12s}.step-del svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.step-row:hover .step-del,.step-row:focus-within .step-del,.step-del:focus-visible{opacity:1}.step-del:hover{background:var(--danger-soft);color:var(--danger)}.steps-empty{text-align:center;padding:28px 0;color:var(--muted);font-size:var(--font-md);line-height:1.9}.steps-empty strong{font-weight:500}.sm-head{padding:14px 14px 12px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.sm-head h3{font-size:var(--font-lg);font-weight:500;color:var(--text)}.sm-close,.sm-remove{width:28px;height:28px;padding:0;border-radius:7px;background:transparent;border:none;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--muted);transition:background .12s,color .12s}.sm-close svg,.sm-remove svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}.sm-close:hover{background:var(--hover);color:var(--text)}.sm-remove:hover{background:var(--danger-soft);color:var(--danger)}.sm-remove-spacer{width:28px;flex-shrink:0}.sm-body{padding:4px 20px 8px;overflow-y:auto;display:flex;flex-direction:column}.sm-group{display:flex;flex-direction:column;padding:14px 0 16px;border-bottom:1px solid var(--border)}.sm-group:last-child{border-bottom:none}.sm-section{font-size:var(--font-md);font-weight:500;color:var(--text)}.sm-hint{margin:2px 0 10px;font-size:var(--font-sm);color:var(--muted)}.sm-rows{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.sm-row{display:flex;align-items:center;gap:8px}.sm-input{flex:1;min-width:0;height:32px;border:1px solid var(--border);border-radius:7px;background:transparent;padding:0 10px;color:var(--text);caret-color:var(--accent);font-size:var(--font-md);outline:none;transition:border-color .12s}.sm-input:hover{border-color:var(--muted)}.sm-input:focus{border-color:var(--accent)}.sm-tag{flex-shrink:0;font-size:var(--font-xs);font-weight:500;color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:1px 8px}.sm-field{position:relative;flex:1;min-width:0;display:flex}.sm-field:has(.sm-tag) .sm-input{padding-right:84px}.sm-field .sm-tag{position:absolute;right:6px;top:50%;transform:translateY(-50%);pointer-events:none}.seg{display:flex;flex-shrink:0;padding:2px;gap:2px;border-radius:8px;border:1px solid var(--border)}.seg-btn{height:26px;padding:0 10px;border:none;border-radius:6px;background:transparent;color:var(--muted);font-size:var(--font-sm);transition:background .12s,color .12s}.seg-btn:hover{color:var(--text)}.seg-btn[aria-checked=true]{background:var(--hover-strong);color:var(--text);font-weight:500}.sm-dot,.sm-swatch{flex-shrink:0;padding:0;border-radius:50%;background:var(--dot);border:3px solid var(--surface);box-shadow:0 0 0 1px color-mix(in srgb,var(--dot) 45%,transparent);transition:transform .12s,box-shadow .12s}.sm-dot{width:22px;height:22px;margin:0 3px}.sm-dot:hover,.sm-dot[aria-expanded=true]{box-shadow:0 0 0 1px var(--dot)}.sm-swatches{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 4px 32px;padding:8px 10px;border-radius:8px;border:1px solid var(--border)}.sm-swatch{width:20px;height:20px}.sm-swatch:hover{transform:scale(1.12)}.sm-swatch.on{box-shadow:0 0 0 2px var(--dot)}.sm-add{align-self:flex-start;font-size:var(--font-md);font-weight:500;background:transparent;color:var(--accent);border:none;border-radius:7px;padding:6px 8px;margin-left:-8px;transition:background .12s,color .12s}.sm-add:hover:not(:disabled){background:var(--accent-soft);color:var(--accent-hover)}.sm-add:disabled{color:var(--text-dim)}.sm-foot{display:flex;justify-content:flex-end;padding:12px 20px 16px;border-top:1px solid var(--border);flex-shrink:0}.sm-save{padding:7px 18px;border-radius:7px;background:var(--accent);color:var(--on-accent);border:none;font-size:var(--font-md);font-weight:600;transition:background .15s}.sm-save:hover{background:var(--accent-hover)}@media(max-width:480px){.sm-row{flex-wrap:wrap}.sm-field{flex-basis:100%}}.list-empty{padding:14px 16px 2px;color:var(--muted);font-size:var(--font-md)}.daily{margin-top:16px}.daily-heading{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:0 8px}.daily-title{margin:0;padding:3px 0;font-size:var(--font-lg);font-weight:500;color:var(--text)}.daily-hint{font-size:var(--font-sm);color:var(--muted)}.daily-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;column-gap:12px;align-items:start;min-width:0;padding:8px 10px 6px 14px;border-top:1px solid var(--border);transition:background .1s}.daily-row:first-child{border-top:none}.daily-row:hover{background:var(--hover)}.daily-label{font-size:var(--font-base);font-weight:500;padding:1px 0 2px;border-bottom:1px solid transparent;transition:border-color .12s}.daily-label:focus{border-bottom-color:var(--accent)}.daily-row.done .daily-label{color:var(--text-dim);text-decoration:line-through;text-decoration-color:var(--text-dim)}.daily-row:hover .tr-del,.daily-row:focus-within .tr-del{opacity:1}@media(hover:none){.daily-row .tr-del{opacity:1}}@container (max-width: 460px){.daily .lh{flex-wrap:nowrap}.daily .lh-summary{order:0;width:auto}}.daily-empty{padding-bottom:12px}.daily-add{width:100%;border:none;border-top:1px solid var(--border);text-align:left;display:flex;align-items:center;gap:8px;padding:10px 14px 11px;color:var(--muted);font-size:var(--font-md);background:transparent;transition:background .12s,color .12s}.daily-add:hover{background:var(--accent-softer);color:var(--accent)}.daily-add:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-3px}.daily-add svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;flex-shrink:0}.daily-ring{display:block;flex-shrink:0;width:14px;height:14px;fill:none}.daily-ring-track{stroke:var(--border);stroke-width:2}.daily-ring-value{stroke:var(--accent);stroke-width:2;transition:stroke-dasharray .2s ease}.daily-ring.complete .daily-ring-track{fill:var(--accent);stroke:var(--accent)}.daily-ring-check{stroke:var(--on-accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.auth-page{min-height:100vh;display:grid;place-items:center;align-content:center;gap:16px;padding:24px 16px}.auth-card{width:100%;max-width:360px;padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:12px}.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:18px;font-size:var(--font-md);font-weight:600}.auth-title{font-size:var(--font-xl);font-weight:600;margin-bottom:16px}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-field{display:flex;flex-direction:column;gap:5px;font-size:var(--font-md);color:var(--muted)}.auth-field input{height:36px;padding:0 10px;background:var(--bg);border:1px solid var(--border);border-radius:7px;color:var(--text);font-size:var(--font-base)}.auth-field input:hover{border-color:var(--muted)}.auth-error{padding:8px 10px;border:1px solid var(--danger);border-radius:7px;background:var(--danger-soft);font-size:var(--font-md)}.auth-message{font-size:var(--font-base);color:var(--muted)}.auth-switch{margin-top:12px;padding:2px 0;border:none;background:transparent;color:var(--accent);font-size:var(--font-md)}.auth-switch:hover{color:var(--accent-hover)}.auth-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 14px;margin-top:14px;font-size:var(--font-md)}.auth-links a,.app-header-link{color:var(--accent);text-decoration:none}.auth-links a:hover,.app-header-link:hover{color:var(--accent-hover);text-decoration:underline}.btn-primary{height:36px;background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-primary:disabled{background:transparent;border-color:var(--border)}.btn-danger{border-color:var(--danger);color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.app-header-end{margin-left:auto;display:flex;align-items:center;gap:12px;min-width:0;font-size:var(--font-md)}.confirm-modal{width:400px;max-width:calc(100vw - 32px);display:flex;flex-direction:column;gap:12px;padding:20px}.confirm-title{font-size:var(--font-lg);font-weight:600}.confirm-body{font-size:var(--font-base);color:var(--muted)}.confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.confirm-actions .btn-primary{height:30px}.sync-indicator{color:var(--text-dim);font-size:var(--font-sm);white-space:nowrap}.sync-error,.sync-at-risk{color:var(--danger)}.account{position:relative;min-width:0}.account-trigger{display:block;max-width:220px}.account-email{display:block;overflow:hidden;text-overflow:ellipsis}.account-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:1000;width:230px;padding:6px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px var(--popover-shadow)}.account-menu-email{padding:6px 8px 8px;border-bottom:1px solid var(--border);margin-bottom:4px;color:var(--muted);font-size:var(--font-sm);overflow-wrap:anywhere}.account-item{display:block;width:100%;padding:6px 8px;border:none;border-radius:6px;background:transparent;text-align:left;font-size:var(--font-md)}.account-item:hover{background:var(--hover)}.account-item-danger{color:var(--danger)}.account-item-danger:hover{background:var(--danger-soft)}.account-error{position:absolute;top:calc(100% + 6px);right:0;z-index:1000;width:230px;padding:8px 10px;border:1px solid var(--danger);border-radius:7px;background:var(--surface);font-size:var(--font-md)}@media(max-width:480px){.account-trigger{max-width:130px}}.info-page{display:flex;flex-direction:column;max-width:680px;min-height:100vh;margin:0 auto;padding:0 24px 32px}@media(max-width:960px){.info-page{padding:0 16px 24px}}.info-header{padding:16px 0;border-bottom:1px solid var(--border);margin-bottom:28px}.info-brand{display:inline-flex;align-items:center;gap:10px;color:var(--text);font-size:var(--font-lg);font-weight:600;text-decoration:none}.info-body{flex:1;font-size:var(--font-base);line-height:1.6}.info-body h1{font-size:var(--font-xl);font-weight:600;margin-bottom:4px}.info-updated{color:var(--text-dim);font-size:var(--font-sm)}.info-body h2{font-size:var(--font-lg);font-weight:600;margin:28px 0 6px}.info-body h3{font-size:var(--font-base);font-weight:600;margin:18px 0 2px}.info-body p,.info-body ul{margin:10px 0}.info-body ul{padding-left:20px}.info-body li+li{margin-top:4px}.info-footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px 16px;margin-top:40px;padding-top:16px;border-top:1px solid var(--border);font-size:var(--font-md)}.info-body a,.info-footer a,.auth-fineprint a{color:var(--accent);text-decoration:none}.info-body a:hover,.info-footer a:hover,.auth-fineprint a:hover{color:var(--accent-hover);text-decoration:underline}.legal-links{display:flex;flex-wrap:wrap;gap:4px 16px}.app-footer,.auth-page>.legal-links{font-size:var(--font-sm)}.app-footer{display:flex;justify-content:center;margin-top:40px;padding-top:16px;border-top:1px solid var(--border)}.app-footer .legal-links a,.auth-page>.legal-links a{color:var(--text-dim);text-decoration:none}.app-footer .legal-links a:hover,.auth-page>.legal-links a:hover{color:var(--text);text-decoration:underline}.auth-fineprint{margin-top:12px;color:var(--muted);font-size:var(--font-sm)}
