:root{--bg: var(--tg-theme-secondary-bg-color, #f4f4f5);--card: var(--tg-theme-section-bg-color, var(--tg-theme-bg-color, #ffffff));--text: var(--tg-theme-text-color, #171717);--text-2: color-mix(in srgb, var(--text) 68%, var(--card));--hint: var(--tg-theme-hint-color, #737373);--link: var(--tg-theme-link-color, #2481cc);--accent: var(--tg-theme-button-color, #2481cc);--accent-text: var(--tg-theme-button-text-color, #ffffff);--danger: var(--tg-theme-destructive-text-color, #dc2626);--raised: color-mix(in srgb, var(--text) 6%, var(--card));--line: color-mix(in srgb, var(--text) 9%, transparent);--ok: #16a34a;--warn: #c27a00;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--ease: cubic-bezier(.22, 1, .36, 1);--r-card: 12px;--r-ctl: 8px;--safe-b: max(env(safe-area-inset-bottom, 0px), var(--tg-safe-area-inset-bottom, 0px));--nav-h: 64px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--text);font:15px/20px -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}#root{min-height:100vh;min-height:100dvh;padding-bottom:calc(var(--nav-h) + 16px + var(--safe-b))}a{color:var(--link);text-decoration:none;cursor:pointer}a,button,label,input,select,textarea{touch-action:manipulation}fieldset{border:0;padding:0;margin-inline:0;min-width:0}.list>button.rowbtn{width:100%;background:none;color:var(--link);border-radius:0;justify-content:flex-start;font-weight:400;padding:12px 16px}button.linklike{background:none;color:var(--link);padding:0;min-height:0;font-weight:400;justify-content:flex-start;text-align:left;border-radius:4px}svg{flex:none}h1{font-size:24px;line-height:28px;font-weight:500;margin:4px 0 16px}h2{font-size:13px;line-height:16px;font-weight:500;color:var(--hint);margin:24px 4px 8px}.page{padding:16px;max-width:720px;margin:0 auto}.card{background:var(--card);border-radius:var(--r-card);padding:12px 16px;margin-bottom:8px}.card.link{display:block;color:inherit;transition:background-color .15s var(--ease)}.card.link:active{background:var(--raised)}.list{background:var(--card);border-radius:var(--r-card);overflow:hidden}.list>*{padding:12px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;color:inherit;min-height:44px}.list>*:last-child{border-bottom:0}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.grow{flex:1;min-width:0}.hint{color:var(--hint);font-size:13px}.muted{color:var(--hint)}.small{font-size:13px}.title{font-weight:500}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pre{white-space:pre-wrap;word-break:break-word}.danger{color:var(--danger)}.ok{color:var(--ok)}.mt{margin-top:12px}.num{font-variant-numeric:tabular-nums}.mono{font-family:var(--mono);font-size:12px;letter-spacing:0;font-variant-numeric:tabular-nums}.status{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2);white-space:nowrap}.dot{width:6px;height:6px;border-radius:50%;background:var(--hint);flex:none}.dot.accent{background:var(--accent)}.dot.ok{background:var(--ok)}.dot.warn{background:var(--warn)}.dot.danger{background:var(--danger)}.dot.hollow{background:transparent;box-shadow:inset 0 0 0 1.5px var(--hint)}.tc{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap}.tc.overdue{color:var(--danger)}.tc.soon{color:var(--warn)}.tag{display:inline-block;font-size:12px;line-height:16px;padding:2px 6px;border-radius:4px;background:var(--raised);color:var(--text-2);white-space:nowrap}button,.btn{font:inherit;font-weight:500;border:0;border-radius:var(--r-ctl);padding:0 16px;min-height:44px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:var(--accent-text);transition:background-color .15s var(--ease),opacity .15s var(--ease),transform .12s var(--ease)}button:active:not(:disabled){transform:scale(.98)}button:disabled{opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 60%,transparent);outline-offset:2px}button.secondary{background:var(--raised);color:var(--text)}button.ghost{background:transparent;color:var(--link);padding:0 8px;min-height:44px}button.danger{background:var(--raised);color:var(--danger)}button.icon{background:transparent;color:var(--hint);padding:0;min-height:44px;width:44px;margin:-6px -10px -6px 0}button.block{width:100%}.btns{display:flex;gap:8px;flex-wrap:wrap}.btns>button{flex:1}input,select,textarea{font:inherit;font-size:16px;width:100%;min-height:44px;padding:12px;border-radius:var(--r-ctl);border:1px solid var(--line);background:var(--card);color:var(--text);outline:none;transition:border-color .15s var(--ease)}input:focus,select:focus,textarea:focus{border-color:color-mix(in srgb,var(--accent) 50%,transparent)}textarea{min-height:88px;resize:vertical}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:22px;min-height:0;padding:0;flex:none;border:1.5px solid color-mix(in srgb,var(--hint) 70%,transparent);border-radius:6px;background:transparent;cursor:pointer;display:inline-grid;place-content:center;transition:background-color .15s var(--ease),border-color .15s var(--ease)}input[type=checkbox]:after{content:"";width:12px;height:7px;border:solid var(--accent-text);border-width:0 0 2px 2px;transform:translateY(-2px) rotate(-45deg) scale(0);transition:transform .15s var(--ease)}input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}input[type=checkbox]:checked:after{transform:translateY(-2px) rotate(-45deg) scale(1)}input[type=checkbox]:disabled{opacity:.5}input[type=checkbox].switch{width:51px;height:31px;border-radius:16px;border:0;background:color-mix(in srgb,var(--hint) 35%,transparent);place-content:center start;padding:2px}input[type=checkbox].switch:after{width:27px;height:27px;border:0;border-radius:50%;background:#fff;transform:none;box-shadow:0 2px 4px #0003;transition:transform .2s var(--ease)}input[type=checkbox].switch:checked{background:var(--accent)}input[type=checkbox].switch:checked:after{transform:translate(20px)}input[type=color]{padding:4px}label.field{display:block;margin-bottom:16px}label.field>span{display:block;font-size:13px;color:var(--hint);margin:0 4px 4px}.tabs{display:flex;flex-wrap:wrap;gap:2px;padding:2px;margin:0 0 12px;background:var(--raised);border-radius:10px}.tabs::-webkit-scrollbar{display:none}.tabs button{flex:1 0 auto;min-height:40px;padding:0 8px;white-space:nowrap;font-size:14px;background:transparent;color:var(--text-2);font-weight:500;border-radius:var(--r-ctl)}.tabs button.active{background:var(--card);color:var(--text);box-shadow:0 1px 2px #0000000f}.nav{position:fixed;left:0;right:0;bottom:0;display:flex;background:var(--card);border-top:1px solid var(--line);padding-bottom:max(8px,var(--safe-b));z-index:10}.nav a{flex:1;min-width:0;min-height:var(--nav-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:8px 2px;color:var(--hint);font-size:12px;line-height:14px;font-weight:500;position:relative;transition:color .15s var(--ease);-webkit-tap-highlight-color:transparent;white-space:nowrap}.nav a svg{width:26px;height:26px}.nav a:active{opacity:.6}.nav a.active{color:var(--accent)}@media (max-width: 359px){.nav a{font-size:11px;letter-spacing:-.2px}}.nav .count{position:absolute;top:6px;left:50%;margin-left:6px;background:var(--danger);color:#fff;border-radius:8px;font-size:10px;min-width:16px;padding:0 4px;line-height:16px;text-align:center;font-variant-numeric:tabular-nums}.fab{position:fixed;right:16px;bottom:calc(var(--nav-h) + 24px + var(--safe-b));width:56px;height:56px;border-radius:16px;padding:0;box-shadow:0 8px 24px #0000001f;z-index:11}.empty{text-align:center;color:var(--hint);padding:48px 16px}.err{background:color-mix(in srgb,var(--danger) 10%,var(--card));color:var(--danger);padding:12px;border-radius:var(--r-ctl);margin-bottom:12px}.progress{height:2px;background:var(--line);border-radius:1px;overflow:hidden;margin-top:8px}.progress>div{height:100%;background:var(--text-2)}.table-wrap{overflow:auto;background:var(--card);border-radius:var(--r-card);max-height:70vh}table{border-collapse:collapse;font-size:13px;width:100%;font-variant-numeric:tabular-nums}th,td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}th{position:sticky;top:0;background:var(--card);font-weight:500;color:var(--text-2)}.chip-select{display:flex;gap:8px;flex-wrap:wrap}.chip-select button{min-height:40px;padding:0 12px;border-radius:var(--r-ctl);background:var(--card);color:var(--text-2);border:1px solid var(--line)}.chip-select button.on{background:var(--accent);color:var(--accent-text);border-color:transparent}.timeline{border-left:1px solid var(--line);margin-left:4px;padding-left:12px}.timeline>div{margin-bottom:12px}.chart{display:flex;align-items:flex-end;gap:8px;height:160px;padding-top:8px}.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;height:100%}.chart .stack{flex:1;width:100%;display:flex;flex-direction:column;justify-content:flex-end;gap:2px}.chart .seg{width:100%;border-radius:3px}.chart .seg.on{background:var(--accent)}.chart .seg.late{background:color-mix(in srgb,var(--danger) 75%,var(--card))}.chart .seg.zero{background:var(--line);height:2px}.chart .lbl{font-family:var(--mono);font-size:11px;color:var(--hint)}.legend{display:flex;gap:16px;font-size:12px;color:var(--hint)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:8px;height:8px;border-radius:2px;display:inline-block}.rank .bar{height:4px;background:var(--line);border-radius:2px;overflow:hidden;margin-top:8px}.rank .bar>div{height:100%;background:var(--text-2);border-radius:2px}.rank .pct{font-size:20px;line-height:24px;font-weight:500;font-variant-numeric:tabular-nums}.spinner{width:24px;height:24px;border:2px solid var(--line);border-top-color:var(--hint);border-radius:50%;animation:spin .8s linear infinite;margin:48px auto}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition-duration:0ms!important;animation-duration:0ms!important}button:active:not(:disabled){transform:none}.spinner{animation:spin 2s linear infinite!important}}.answer{border-left:3px solid var(--accent)}.answer .label{font-size:13px;color:var(--hint);margin-bottom:4px}.notice{background:color-mix(in srgb,var(--warn) 12%,var(--card));border-radius:var(--r-card);padding:12px 16px;margin-top:12px;font-size:15px}label.check{display:flex;align-items:center;gap:12px;margin-bottom:16px;min-height:44px}label.check>span{flex:1}label.check small{display:block;color:var(--hint);font-size:13px}
