:root{--bg: var(--tg-theme-secondary-bg-color, #0f1419);--card: var(--tg-theme-section-bg-color, var(--tg-theme-bg-color, #1a2129));--fg: var(--tg-theme-text-color, #eef1f4);--muted: var(--tg-theme-hint-color, #7d8b99);--accent: var(--tg-theme-button-color, #5b8def);--accent-fg: var(--tg-theme-button-text-color, #fff);--line: color-mix(in srgb, var(--fg) 8%, transparent);--soft: color-mix(in srgb, var(--fg) 6%, transparent);--danger: #ef5a5a;--ok: #3fbf7f;--warn: #f2a93b;--r: 16px;--ease: cubic-bezier(.2, .8, .2, 1)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{background:var(--bg)}body{margin:0;font:15px/1.35 -apple-system,SF Pro Text,system-ui,sans-serif;background:var(--bg);color:var(--fg);padding-bottom:calc(76px + env(safe-area-inset-bottom));-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit;color:var(--fg)}.app{padding:14px 14px 20px;max-width:720px;margin:0 auto}.grow{flex:1;min-width:0}.center{text-align:center}.muted{color:var(--muted)}.text-danger{color:var(--danger)}.text-ok{color:var(--ok)}.count{margin-left:6px;padding:1px 7px;border-radius:10px;background:var(--soft);color:var(--muted);font-size:11px;font-weight:600}.hero{display:flex;align-items:center;justify-content:space-between;margin:4px 2px 14px}.hero h1{margin:2px 0 0;font-size:24px;font-weight:700;letter-spacing:-.3px}.hero-date{color:var(--muted);font-size:13px}.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}.sum{border:0;background:var(--card);border-radius:14px;padding:10px 6px;display:flex;flex-direction:column;align-items:center;gap:2px;transition:transform .15s var(--ease),box-shadow .2s;box-shadow:inset 0 0 0 1.5px transparent}.sum:active{transform:scale(.96)}.sum b{font-size:21px;font-weight:700}.sum span{font-size:11px;color:var(--muted)}.sum.danger b{color:var(--danger)}.sum.warn b{color:var(--warn)}.sum.accent b{color:var(--accent)}.sum.on{box-shadow:inset 0 0 0 1.5px var(--accent)}.searchbox{display:flex;align-items:center;gap:8px;background:var(--card);border-radius:12px;padding:0 12px;color:var(--muted);margin-bottom:10px}.searchbox input{flex:1;border:0;background:transparent;padding:11px 0;outline:none;font-size:15px}.searchbox button{border:0;background:var(--soft);border-radius:10px;width:22px;height:22px;display:grid;place-items:center;color:var(--muted);padding:0}.segmented{display:flex;background:var(--card);border-radius:12px;padding:3px;margin-bottom:10px;gap:2px}.segmented button{flex:1;border:0;background:transparent;padding:8px 6px;border-radius:9px;font-size:13px;font-weight:500;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;gap:5px;transition:background .2s,color .2s}.segmented button.active{background:var(--accent);color:var(--accent-fg)}.segmented.status button.active.s-done{background:var(--ok);color:#fff}.segmented.status button.active.s-in_progress{background:var(--warn);color:#1a1a1a}.chips{display:flex;gap:6px;overflow-x:auto;margin:0 -14px 10px;padding:0 14px;scrollbar-width:none;align-items:center}.chips::-webkit-scrollbar{display:none}.chips button,.chip-select{flex:0 0 auto;border:0;background:var(--card);padding:7px 13px;border-radius:18px;font-size:13px;white-space:nowrap;transition:background .2s}.chips button.active,.chip-select.active{background:var(--accent);color:var(--accent-fg)}.chips.small button,.chips.small .chip-select{padding:5px 11px;font-size:12px}.chip-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;outline:none}.chips-label{font-size:12px;color:var(--muted);margin-right:2px;flex:0 0 auto}.viewbar{display:flex;gap:6px;margin-bottom:10px}.viewbar button{flex:1;border:0;background:var(--card);border-radius:12px;padding:9px;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:13px;font-weight:500;color:var(--muted)}.viewbar button.active{color:var(--fg);box-shadow:inset 0 0 0 1.5px var(--accent)}.quick{display:flex;align-items:flex-end;gap:8px;background:var(--card);border-radius:14px;padding:6px 6px 6px 14px;margin-bottom:14px;border:1.5px dashed var(--line);transition:border-color .2s}.quick.open{border-color:var(--accent);border-style:solid}.quick textarea{flex:1;border:0;background:transparent;resize:none;outline:none;padding:7px 0;font-size:15px;line-height:1.4}.quick-btn{border:0;background:var(--accent);color:var(--accent-fg);min-width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-weight:600;padding:0 10px}.group{margin-bottom:18px}.group h4,.section-title{margin:0 4px 8px;font-size:13px;font-weight:600;color:var(--muted);display:flex;align-items:center}.g-overdue h4{color:var(--danger)}.g-today h4{color:var(--warn)}.swipe{position:relative;margin-bottom:8px;border-radius:var(--r)}.swipe-bg{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--r);display:flex;align-items:center;gap:6px;padding:0 18px;font-weight:600;font-size:14px;color:#fff}.swipe-bg.right{background:var(--ok);justify-content:flex-start}.swipe-bg.left{background:var(--warn);justify-content:flex-end;color:#1a1a1a}.task{position:relative;display:flex;gap:12px;align-items:flex-start;background:var(--card);border-radius:var(--r);padding:13px 14px;overflow:hidden}.task:after{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 3px 3px 0;background:transparent}.task.p2:after,.bcard.p2:after{background:var(--danger)}.task.prog:after{background:var(--warn)}.task.done{opacity:.55}.task.done .task-title{text-decoration:line-through}.task-body{flex:1;min-width:0}.task-title{font-size:15px;font-weight:550;line-height:1.3;word-wrap:break-word}.desc{font-size:13px;color:var(--muted);margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.meta{display:flex;gap:5px;flex-wrap:wrap;align-items:center;margin-top:7px}.meta:empty{display:none}.pill{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:8px;background:var(--soft);color:var(--muted);font-size:11.5px;font-weight:500;white-space:nowrap}.pill.danger{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger)}.pill.warn{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}.pill.ok{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.pill.accent{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.pill.tag{color:var(--accent);background:transparent;padding:2px 4px}.who{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--muted)}.check{flex:0 0 auto;width:24px;height:24px;margin-top:-1px;border-radius:50%;border:2px solid color-mix(in srgb,var(--muted) 70%,transparent);background:transparent;display:grid;place-items:center;color:#fff;padding:0;transition:all .2s var(--ease)}.check:active{transform:scale(.85)}.check.on{background:var(--ok);border-color:var(--ok)}.check.sm{width:20px;height:20px}.p2 .check{border-color:var(--danger)}.avatar{width:28px;height:28px;border-radius:50%;color:#fff;display:inline-grid;place-items:center;font-size:11px;font-weight:700;flex:0 0 auto}.avatar.sm{width:18px;height:18px;font-size:8px}.avatar.lg{width:42px;height:42px;font-size:15px}.avatar.xl{width:72px;height:72px;font-size:26px}.board-tabs{display:flex;gap:6px;margin-bottom:10px}.board-tabs button{flex:1;border:0;background:var(--card);border-radius:12px;padding:9px 4px;font-size:13px;font-weight:600;color:var(--muted);display:flex;align-items:center;justify-content:center;border-bottom:2.5px solid transparent}.board-tabs button.active{color:var(--fg)}.board-tabs button.active.c-open{border-color:var(--accent)}.board-tabs button.active.c-in_progress{border-color:var(--warn)}.board-tabs button.active.c-done{border-color:var(--ok)}.board{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -14px;padding:0 14px 4px;scrollbar-width:none;align-items:flex-start}.board::-webkit-scrollbar{display:none}.col{flex:0 0 88%;scroll-snap-align:center;min-height:50vh;border-radius:18px;padding:8px;background:color-mix(in srgb,var(--card) 45%,transparent)}@media (min-width: 700px){.col{flex-basis:calc(33.33% - 7px)}.board{overflow-x:visible}}.col-empty{text-align:center;color:var(--muted);font-size:13px;padding:40px 0}.bcard{position:relative;background:var(--card);border-radius:14px;padding:12px 12px 8px;margin-bottom:8px;overflow:hidden}.bcard:after{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0}.bcard.done{opacity:.6}.bcard.done .task-title{text-decoration:line-through}.bmove{display:flex;justify-content:space-between;align-items:center;margin-top:8px;padding-top:6px;border-top:1px solid var(--line)}.bmove button{border:0;background:transparent;color:var(--muted);padding:4px 6px;border-radius:8px;display:inline-flex;align-items:center;gap:2px;font-size:12.5px;font-weight:600}.bmove button.fwd{color:var(--accent)}.c-in_progress .bmove button.fwd{color:var(--ok)}.bmove button:active{background:var(--soft)}.sheet-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:flex-end;justify-content:center;z-index:100;animation:fade .2s}.sheet{background:var(--bg);width:100%;max-width:720px;padding:6px 14px calc(20px + env(safe-area-inset-bottom));border-radius:22px 22px 0 0;max-height:92vh;overflow-y:auto;animation:up .3s var(--ease)}@keyframes fade{0%{opacity:0}}@keyframes up{0%{transform:translateY(40%);opacity:.5}}.grab{width:38px;height:5px;border-radius:3px;background:var(--line);margin:4px auto 8px}.sheet-top{display:flex;align-items:center;gap:6px;margin-bottom:8px}.sheet-top h2{margin:0;font-size:17px}.icon-btn{border:0;background:var(--card);width:36px;height:36px;border-radius:12px;display:grid;place-items:center;color:var(--fg);padding:0;flex:0 0 auto}.icon-btn.danger{color:var(--danger)}.icon-btn.ghost{background:transparent;color:var(--muted);width:28px;height:28px}.detail-head{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 8px}.detail-title{font-size:21px;font-weight:700;margin:0 0 6px;line-height:1.25;word-wrap:break-word}.detail-title.struck{text-decoration:line-through;color:var(--muted)}.detail-desc{color:var(--muted);white-space:pre-wrap;margin-bottom:14px;font-size:14.5px}.card{background:var(--card);border-radius:var(--r);padding:12px 14px;margin-bottom:10px}.card-title{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--muted);display:flex;align-items:center;gap:2px}.info-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:14px}.info-row:last-child{border-bottom:0}.info-row.small{font-size:12.5px}.bar{height:5px;background:var(--soft);border-radius:3px;overflow:hidden;margin:2px 0 8px}.bar>div{height:100%;background:var(--ok);border-radius:3px;transition:width .4s var(--ease)}.subtask{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:14.5px}.subtask.done .grow{text-decoration:line-through;color:var(--muted)}.inline-input{display:flex;gap:6px;margin-top:8px}.inline-input input{flex:1;border:0;background:var(--soft);border-radius:10px;padding:10px 12px;outline:none;font-size:14.5px}.inline-input button{border:0;background:var(--accent);color:var(--accent-fg);width:40px;border-radius:10px;display:grid;place-items:center}.inline-input button:disabled{opacity:.35}.bubble{background:var(--soft);border-radius:14px 14px 14px 4px;padding:8px 11px;margin:0 40px 6px 0;font-size:14px;white-space:pre-wrap;word-wrap:break-word}.bubble.mine{background:color-mix(in srgb,var(--accent) 20%,transparent);border-radius:14px 14px 4px;margin:0 0 6px 40px}.bubble .author{color:var(--accent);font-size:12px;font-weight:600;margin-bottom:1px}.bubble .ts{color:var(--muted);font-size:10.5px;text-align:right;margin-top:2px}.history summary{list-style:none;cursor:pointer}.history summary::-webkit-details-marker{display:none}.history summary .card-title{margin:0}.history summary svg{margin-left:auto;transition:transform .2s}.history[open] summary svg{transform:rotate(180deg)}.history[open] summary{margin-bottom:6px}.title-input{width:100%;border:0;background:transparent;font-size:21px;font-weight:650;padding:8px 2px;outline:none}.desc-input{width:100%;border:0;background:var(--card);border-radius:12px;padding:10px 12px;min-height:64px;resize:vertical;outline:none;margin-bottom:4px;font-size:14.5px}.field-label{font-size:12px;color:var(--muted);font-weight:600;margin:12px 2px 6px}.row{display:flex;gap:8px}.row>*{flex:1;min-width:0}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.field span{font-size:12px;color:var(--muted);padding-left:2px}.field input,.field select{border:0;background:var(--card);border-radius:12px;padding:11px 12px;font-size:14.5px;outline:none;width:100%;min-height:44px}.field input:disabled{opacity:.4}.dot{display:inline-block;width:8px;height:8px;border-radius:50%}.btn{border:0;border-radius:12px;padding:10px 14px;font-size:14px;font-weight:600}.btn-primary{background:var(--accent);color:var(--accent-fg)}.btn-block{width:100%}.btn.big{padding:14px;font-size:16px;margin-top:10px}.btn:disabled{opacity:.4}.cal-nav{display:flex;align-items:center;justify-content:space-between;margin:2px 0 10px}.cal-nav h3{margin:0;font-size:17px}.card.cal{padding:10px 8px}.cal-header,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.cal-header div{text-align:center;font-size:11px;color:var(--muted);padding:2px 0 6px;font-weight:600}.cal-day{position:relative;border:0;background:transparent;aspect-ratio:1;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;gap:1px}.cal-day .num{font-size:14px;font-weight:500}.cal-day.other{opacity:.3}.cal-day.today .num{color:var(--accent);font-weight:700}.cal-day.sel{background:var(--accent)}.cal-day.sel .num{color:var(--accent-fg)}.mark{font-style:normal;font-size:9.5px;font-weight:700;min-width:15px;height:14px;line-height:14px;border-radius:7px;padding:0 3px;background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent)}.mark.late{background:var(--danger);color:#fff}.mark.done{background:color-mix(in srgb,var(--ok) 22%,transparent);color:var(--ok)}.cal-day.sel .mark{background:var(--accent-fg);color:var(--accent)}.section-title{margin-top:16px}.cal-item{width:100%;border:0;background:var(--card);border-radius:14px;padding:12px;margin-bottom:6px;display:flex;align-items:center;gap:10px;text-align:left;color:var(--fg)}.cal-item .time{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:38px}.cal-item.late .time{color:var(--danger)}.cal-item.done{opacity:.55}.cal-item.done .grow{text-decoration:line-through}.cal-item svg{color:var(--muted)}.small-note{font-size:12.5px;text-align:center;margin-top:12px}.totals{display:flex;align-items:center;gap:16px;padding:16px}.ring{--p: 0;width:84px;height:84px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;background:conic-gradient(var(--ok) calc(var(--p) * 1%),var(--soft) 0);position:relative}.ring:before{content:"";position:absolute;top:9px;right:9px;bottom:9px;left:9px;border-radius:50%;background:var(--card)}.ring b{position:relative;font-size:19px}.tot-grid{flex:1;display:grid;grid-template-columns:repeat(3,1fr);text-align:center}.tot-grid b{display:block;font-size:22px}.tot-grid span{font-size:11.5px;color:var(--muted)}.person{display:flex;align-items:center;gap:10px;padding:6px 0}.big-num{font-size:18px;font-weight:700}.mini-stats{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12.5px;color:var(--muted)}.mini-stats b{color:var(--fg)}.profile-card{text-align:center;padding:24px 0 18px}.profile-card h2{margin:10px 0 2px;font-size:22px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:flex;background:color-mix(in srgb,var(--card) 88%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--line);padding:4px 0 calc(4px + env(safe-area-inset-bottom));z-index:50}.bottom-nav button{position:relative;flex:1;background:transparent;border:0;color:var(--muted);font-size:10.5px;font-weight:500;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;transition:color .2s}.bottom-nav button.active{color:var(--accent)}.badge{position:absolute;top:2px;left:calc(50% + 6px);font-style:normal;background:var(--danger);color:#fff;font-size:10px;font-weight:700;min-width:16px;height:16px;line-height:16px;border-radius:8px;padding:0 4px}.fab{position:fixed;right:18px;bottom:calc(82px + env(safe-area-inset-bottom));width:54px;height:54px;border-radius:18px;border:0;background:var(--accent);color:var(--accent-fg);display:grid;place-items:center;box-shadow:0 6px 20px #0000004d;z-index:60}.toast{position:fixed;left:50%;bottom:calc(86px + env(safe-area-inset-bottom));transform:translate(-50%);background:var(--fg);color:var(--bg);padding:9px 16px;border-radius:20px;font-size:13.5px;font-weight:600;z-index:200;animation:pop .25s var(--ease)}@keyframes pop{0%{transform:translate(-50%,10px);opacity:0}}.pull{position:fixed;top:10px;left:50%;transform:translate(-50%);color:var(--muted);font-size:20px;z-index:5}.empty{text-align:center;color:var(--muted);padding:50px 12px;font-size:14px}.empty.small{padding:18px}.empty-icon{width:60px;height:60px;border-radius:50%;background:var(--card);display:grid;place-items:center;margin:0 auto 10px;color:var(--ok)}.error{color:var(--danger);padding:10px 12px;background:color-mix(in srgb,var(--danger) 12%,transparent);border-radius:12px;margin-bottom:10px;font-size:13px}.skeleton{background:var(--card);border-radius:var(--r);height:64px;margin-bottom:8px;position:relative;overflow:hidden}.skeleton.tall{height:110px}.skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,var(--soft),transparent);animation:shimmer 1.3s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.toolbar{display:flex;gap:8px;margin-bottom:10px}.toolbar .searchbox{flex:1;margin:0}.viewtoggle{display:flex;background:var(--card);border-radius:12px;padding:3px;gap:2px}.viewtoggle button{border:0;background:transparent;width:38px;border-radius:9px;display:grid;place-items:center;color:var(--muted)}.viewtoggle button.active{background:var(--accent);color:var(--accent-fg)}
