:root{--tg-bg: #18222d;--tg-secondary-bg: #131c26;--tg-section-bg: #18222d;--tg-text: #ffffff;--tg-hint: #7d8b99;--tg-link: #5eabe1;--tg-button: #50a8eb;--tg-button-text: #ffffff;--tg-destructive: #ee686f;--tg-separator: rgba(125, 139, 153, .2)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--tg-secondary-bg);color:var(--tg-text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.page{flex:1;padding:12px 12px 76px;display:flex;flex-direction:column;gap:12px}.page-title{font-size:20px;font-weight:700;padding:4px 4px 0}.card{background:var(--tg-section-bg);border-radius:12px;padding:14px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.stat-card{background:var(--tg-section-bg);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}.stat-value{font-size:24px;font-weight:700}.stat-label,.stat-sub{font-size:12px;color:var(--tg-hint)}.section-title{font-size:13px;font-weight:600;color:var(--tg-hint);text-transform:uppercase;letter-spacing:.4px;padding:4px 4px 0}.list{display:flex;flex-direction:column}.list .card{border-radius:0}.list .card:first-child{border-radius:12px 12px 0 0}.list .card:last-child{border-radius:0 0 12px 12px}.list .card:only-child{border-radius:12px}.list .card+.card{border-top:1px solid var(--tg-separator)}.row{display:flex;align-items:center;gap:10px}.row-main{flex:1;min-width:0}.row-title{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-sub{font-size:12px;color:var(--tg-hint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}a{color:var(--tg-link);text-decoration:none}.badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--tg-secondary-bg);color:var(--tg-hint);white-space:nowrap}.badge.ok{color:#4fae4e}.badge.warn{color:#e6a23c}.badge.err{color:var(--tg-destructive)}.badge.info{color:var(--tg-link)}.progress-track{height:6px;border-radius:999px;background:var(--tg-secondary-bg);overflow:hidden}.progress-fill{height:100%;border-radius:999px;background:var(--tg-button);transition:width .3s ease}.chip-row{display:flex;gap:6px;overflow-x:auto;padding:0 2px;scrollbar-width:none}.chip-row::-webkit-scrollbar{display:none}.chip{border:none;border-radius:999px;padding:6px 14px;font-size:13px;font-weight:500;background:var(--tg-section-bg);color:var(--tg-text);white-space:nowrap;cursor:pointer}.chip.active{background:var(--tg-button);color:var(--tg-button-text)}.todo-input-row{display:flex;gap:8px}.todo-input{flex:1;border:none;border-radius:12px;padding:12px 14px;font-size:15px;background:var(--tg-section-bg);color:var(--tg-text);outline:none}.todo-input::placeholder{color:var(--tg-hint)}.btn{border:none;border-radius:12px;padding:12px 18px;font-size:15px;font-weight:600;background:var(--tg-button);color:var(--tg-button-text);cursor:pointer}.btn:disabled{opacity:.5}.todo-check{width:22px;height:22px;min-width:22px;border-radius:6px;border:2px solid var(--tg-hint);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--tg-button-text);font-size:14px;line-height:1}.todo-check.done{background:var(--tg-button);border-color:var(--tg-button)}.todo-text.done{text-decoration:line-through;color:var(--tg-hint)}.todo-delete{border:none;background:transparent;color:var(--tg-hint);font-size:18px;cursor:pointer;padding:4px 8px}.action-form{display:flex;flex-direction:column;gap:12px}.field{display:flex;flex-direction:column;gap:5px}.field-label{font-size:12px;color:var(--tg-hint)}.field-input{border:1px solid var(--tg-separator);border-radius:10px;padding:10px 12px;font-size:15px;background:var(--tg-bg);color:var(--tg-text);outline:none;width:100%;box-sizing:border-box}.field-input:focus{border-color:var(--tg-button)}.check-row{display:flex;align-items:center;gap:10px;font-size:14px;cursor:pointer}.check-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--tg-button)}.btn-danger{background:var(--tg-destructive);color:#fff}.approve-bar{display:flex;gap:8px}.approve-bar .btn{flex:1;padding:12px 8px;font-size:14px}.log-box{background:#0e1621;color:#c9d4e0;border-radius:12px;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:45vh;overflow-y:auto;margin:0}.tabbar{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--tg-section-bg);border-top:1px solid var(--tg-separator);padding-bottom:env(safe-area-inset-bottom)}.tab{flex:1;border:none;background:transparent;color:var(--tg-hint);font-size:11px;font-weight:500;padding:8px 0 10px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px}.tab.active{color:var(--tg-button)}.tab svg{width:22px;height:22px}.empty{text-align:center;color:var(--tg-hint);padding:32px 16px;font-size:14px}.error-box{background:var(--tg-section-bg);border-radius:12px;padding:14px;color:var(--tg-destructive);font-size:14px}.skeleton{border-radius:12px;background:var(--tg-section-bg);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}
