:root{--bg: var(--tg-theme-bg-color, #0f1115);--fg: var(--tg-theme-text-color, #e8e8e8);--card: var(--tg-theme-secondary-bg-color, #1b1f27);--muted: #8a94a6;--accent: var(--tg-theme-button-color, #2e86de);--danger: #e4572e}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px}.app{max-width:720px;margin:0 auto;padding:12px}.header h1{font-size:18px;margin:4px 0 10px}.week-switcher{display:flex;align-items:center;gap:8px;margin-bottom:12px}.week-switcher button{background:var(--card);color:var(--fg);border:none;border-radius:10px;padding:8px 12px;font-size:15px;cursor:pointer}.week-label{flex:1;text-align:center}.task-list{display:flex;flex-direction:column;gap:10px}.card{background:var(--card);border-left:4px solid #888;border-radius:12px;padding:10px 12px}.card.overdue{box-shadow:inset 0 0 0 1px var(--danger)}.card-title{font-weight:600;margin-bottom:4px}.row{display:flex;align-items:center;gap:8px;margin-top:6px}.row.small{justify-content:space-between}.small{font-size:13px}.muted{color:var(--muted)}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}.progress{height:6px;background:#ffffff14;border-radius:4px;margin-top:8px;overflow:hidden}.progress-bar{height:100%;border-radius:4px}.error{color:var(--danger)}.tabs{display:flex;gap:6px;margin:4px 0 12px}.tabs button{background:var(--card);color:var(--fg);border:none;border-radius:8px;padding:6px 12px;cursor:pointer;font-size:14px}.tabs button.active{background:var(--accent);color:#fff}.gantt-head{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:12px;margin-bottom:6px}.gantt-day{padding:2px}.gantt-body{display:flex;flex-direction:column;gap:6px}.gantt-row{position:relative}.gantt-track{position:relative;height:26px;background:var(--card);border-radius:6px;overflow:hidden}.grid-col{position:absolute;top:0;bottom:0;width:1px;background:#ffffff0f}.gantt-bar{position:absolute;top:3px;bottom:3px;border-radius:5px;display:flex;align-items:center;padding:0 6px;min-width:8px;overflow:hidden}.gantt-bar.overdue{outline:2px solid var(--danger);outline-offset:-2px}.gantt-bar.open{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.18) 0 6px,transparent 6px 12px)}.gantt-bar-label{font-size:11px;color:#fff;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.45)}.legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;font-size:13px}.legend-item{display:flex;align-items:center;gap:6px}.day-picker{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:12px;text-align:center;font-size:12px}.day-picker button{background:var(--card);color:var(--fg);border:none;border-radius:8px;padding:4px 0;cursor:pointer}.day-picker button.active{background:var(--accent);color:#fff}.clickable{cursor:pointer}.gantt-bar.clickable:hover{filter:brightness(1.08)}.card.clickable:active{transform:scale(.995)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:flex-end;justify-content:center;z-index:50}.sheet{position:relative;width:100%;max-width:720px;max-height:88vh;overflow-y:auto;background:var(--bg);border:1px solid rgba(255,255,255,.08);border-radius:16px 16px 0 0;padding:18px 16px 24px}@media (min-width: 560px){.overlay{align-items:center}.sheet{border-radius:16px}}.sheet-close{position:absolute;top:12px;right:12px;background:var(--card);color:var(--fg);border:none;border-radius:50%;width:30px;height:30px;cursor:pointer;font-size:14px}.sheet-title{font-size:18px;margin:0 34px 8px 0}.sheet-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:10px 0 6px}.who2{display:flex;align-items:center;gap:7px}.sheet-h3{font-size:14px;margin:18px 0 8px;color:var(--muted)}.pill{font-size:12px;padding:3px 9px;border-radius:999px;white-space:nowrap}.pill.ip{background:#e8a33d29;color:#e8a33d}.pill.dl{background:#f2495c29;color:var(--danger)}.pill.dn{background:#17a39829;color:#17a398}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.timeline li{border-left:2px solid var(--line);padding:0 0 0 12px}.tl-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:2px}.tl-kind{font-size:12px;font-weight:600;color:var(--accent)}
