:root{color-scheme:light;--ink:#202124;--muted:#797e88;--blue:#1672ed;--line:#eceef2;--surface:#f6f7fa;--red:#cf493c;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;font-size:16px;color:var(--ink);background:#fff}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #a0c9ff;outline-offset:3px}button{border:0;background:none;color:inherit}input,textarea,select{color:var(--ink)}[hidden]{display:none!important}#app{max-width:780px;margin:auto;padding:env(safe-area-inset-top) 24px calc(155px + env(safe-area-inset-bottom))}.topbar{display:flex;justify-content:space-between;align-items:center;padding:28px 0 22px}.eyebrow{font-size:.875rem;color:var(--muted);letter-spacing:.025em}h1{font-size:2.1rem;margin:6px 0 0;font-weight:750;letter-spacing:-.06em}h2{font-size:1.2rem;margin:0}h3{font-size:1rem;margin:0 0 12px}.icon-button{width:44px;height:44px;border-radius:50%;background:var(--surface)}svg{width:24px;height:24px;vertical-align:middle}.filters{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:0 0 22px}.filters button{flex-shrink:0;border-radius:20px;padding:8px 17px;font-size:.875rem;color:var(--muted);background:var(--surface)}.filters button.active{background:#eaf2ff;color:var(--blue);font-weight:600}.summary{font-size:.875rem;color:var(--muted);padding:4px 0 12px}.task-row{display:flex;gap:13px;align-items:flex-start;border-bottom:1px solid var(--line);padding:17px 0;min-height:80px}.check{width:28px;height:28px;border:1.5px solid #c7cbd2;border-radius:50%;flex-shrink:0;margin-top:3px;padding:0;position:relative}.check:before{content:"";position:absolute;inset:-8px}.check.done{background:var(--blue);border-color:var(--blue);color:#fff}.task-detail{text-align:left;flex:1;padding:0;min-width:0}.task-detail .task-content{display:block;line-height:1.55;overflow-wrap:anywhere;font-size:1rem}.task-meta{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-top:6px;color:var(--muted);font-size:.8125rem}.category{color:var(--blue)}.category.personal{color:#67784b}.overdue{color:var(--red)}.completed .task-content{color:var(--muted);text-decoration:line-through}.empty{padding:75px 12px;text-align:center}.empty-symbol{color:#b5c8e8;font-size:2.6rem;margin-bottom:14px}.empty h2{font-size:1.1rem;font-weight:550}.empty p{font-size:.875rem;color:var(--muted);line-height:1.7}.add-button{position:fixed;bottom:calc(92px + env(safe-area-inset-bottom));right:max(24px,calc((100vw - 732px)/2));border-radius:28px;background:var(--blue);color:white;padding:14px 22px;box-shadow:0 5px 18px #1672ed24;font-weight:600;z-index:4}.add-button span{font-size:1.3rem;font-weight:400}.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:0;width:min(100%,780px);display:flex;justify-content:space-around;border-top:1px solid var(--line);padding:11px 10px calc(11px + env(safe-area-inset-bottom));background:#ffffffed;backdrop-filter:blur(15px);z-index:5}.tabbar button{width:23%;display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--muted);font-size:.75rem;min-height:48px}.tabbar svg{fill:none;stroke:currentColor;stroke-width:1.6}.tabbar button[aria-current]{color:var(--blue)}.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;font-size:.875rem;color:var(--muted)}.text-button{color:var(--blue);min-height:44px;padding:4px 8px}.strong{font-weight:650}.weekdays{display:grid;grid-template-columns:repeat(7,1fr);font-size:.75rem;text-align:center;color:var(--muted);padding-bottom:14px}.months{height:calc(100dvh - 335px - env(safe-area-inset-bottom));min-height:320px;overflow-y:auto;overscroll-behavior-y:contain;scroll-snap-type:y proximity;scrollbar-width:none;border-top:1px solid var(--line)}.month{scroll-snap-align:start;scroll-margin-top:0;padding:18px 0 24px}.month h2{font-size:1.35rem;letter-spacing:-.03em;margin:0 0 16px}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.day{display:flex;flex-direction:column;height:106px;min-width:0;text-align:left;border-top:1px solid var(--line);padding:6px 3px}.day-number{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:27px;height:27px;margin:0 auto 4px;font-size:.875rem}.day.is-today .day-number{border-radius:50%;background:var(--blue);color:#fff}.day.weekend .day-number{color:var(--muted)}.day.weekend.is-today .day-number{color:white}.calendar-task{display:block;flex-shrink:0;width:100%;font-size:.75rem;line-height:1.55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 2px;border-left:2px solid #5596ee;margin:2px 0;background:#f0f5fc}.calendar-task.personal{border-left-color:#89a277;background:#f4f7f1}.calendar-task.finished{opacity:.5;text-decoration:line-through}.day-more{line-height:16px;font-size:.75rem;color:var(--muted)}dialog{border:0;color:var(--ink);background:white}dialog::backdrop{background:#1e263947;backdrop-filter:blur(2px)}dialog.sheet{position:fixed;inset:auto 0 0;margin:0 auto;width:min(100%,600px);max-height:92dvh;border-radius:23px 23px 0 0;padding:18px 22px calc(26px + env(safe-area-inset-bottom));overflow-y:auto}dialog header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}dialog textarea{resize:vertical;width:100%;border:0;background:var(--surface);border-radius:14px;padding:16px;line-height:1.6;font-size:1.05rem;min-height:105px}.fields{margin-top:20px;border-top:1px solid var(--line)}.fields label{min-height:55px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--line);font-size:.9375rem}.fields label input:not([type=checkbox]),.fields label select{margin-left:auto;max-width:60%;text-align:right;border:0;background:transparent;padding:12px 0;min-width:0}.fields input[type=number]{width:80px}.fields input[type=checkbox]{margin-left:auto;width:42px;height:24px;accent-color:var(--blue)}.field-row{display:flex;gap:18px}.field-row label{flex:1}.field-note{font-size:.8125rem;color:var(--muted);line-height:1.6}.muted{color:var(--muted);font-size:.875rem;line-height:1.65}.primary,.secondary{display:block;text-align:center;min-height:46px;border-radius:12px;padding:12px 16px;line-height:1.4;width:100%;margin-top:12px}.primary{background:var(--blue);color:white;font-weight:600}.secondary{background:var(--surface);color:var(--blue)}.danger{width:100%;min-height:46px;color:var(--red);margin-top:14px}.settings-group{padding:20px 0;border-bottom:1px solid var(--line)}.inline-form{display:flex;align-items:center;gap:10px}.inline-form input,#binding input{flex:1;min-width:0;border:1px solid var(--line);border-radius:9px;padding:12px}.category-item{display:flex;align-items:center;justify-content:space-between;min-height:44px;font-size:.9375rem}.category-item button{min-width:44px;min-height:44px;color:var(--red)}.error{font-size:.875rem;color:var(--red);line-height:1.6}.confirm{border-radius:20px;padding:25px;width:min(90vw,380px)}.confirm p{font-size:.9375rem;line-height:1.7}.confirm-actions{display:flex;gap:12px}#toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(160px + env(safe-area-inset-bottom));background:#252a35;color:white;max-width:90vw;border-radius:12px;padding:12px 18px;z-index:100;font-size:.875rem}#connection{font-size:.875rem;padding:12px;background:#fff6e7;color:#946411;border-radius:10px;margin-bottom:16px}#binding{padding:30px 0}#binding label{display:flex;gap:15px;align-items:center}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.file-label{cursor:pointer}@media(min-width:650px){.day{height:110px}.calendar-task{font-size:.8125rem}.months{height:calc(100dvh - 340px)}dialog.sheet{bottom:5vh;border-radius:22px;max-height:85dvh}}@media(max-width:375px){#app{padding-left:16px;padding-right:16px}.day{padding-left:1px;padding-right:1px}.filters button{padding:8px 13px}}@media(prefers-reduced-motion:no-preference){.check,.filters button{transition:background .15s,color .15s}dialog[open]{animation:appear .17s ease-out}@keyframes appear{from{opacity:.3;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}}
