.login-modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.login-modal{text-align:center;width:100%;max-width:400px;padding:2rem 3rem}.login-modal h2{background:linear-gradient(135deg, var(--accent-light), var(--accent));color:#0000;-webkit-background-clip:text;background-clip:text;margin-bottom:.5rem;font-size:1.5rem;font-weight:800}.login-modal p{color:var(--text-secondary);margin-bottom:1.5rem;font-size:.9rem}.login-input{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);outline:none;margin-bottom:1rem;padding:12px 16px;transition:border-color .2s}.login-input:focus{border-color:var(--accent)}.login-actions{gap:1rem;display:flex}.btn-primary,.btn-success{border-radius:var(--radius-sm);color:#fff;flex:1;padding:10px;font-weight:600;transition:transform .2s,filter .2s}.btn-primary{background:var(--accent)}.btn-success{background:var(--green)}.btn-primary:hover,.btn-success:hover{filter:brightness(1.1);transform:translateY(-1px)}.login-hint{opacity:.5;margin-top:1.5rem;font-size:.75rem}.sidebar{background:var(--bg-secondary);border-right:1px solid var(--border);z-index:100;flex-direction:column;width:320px;transition:transform .3s;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar.closed{transform:translate(-100%)}.sidebar-header{border-bottom:1px solid var(--border);padding:24px 20px 16px}.logo-section{align-items:center;gap:12px;margin-bottom:16px;display:flex}.logo-icon{background:linear-gradient(135deg, var(--accent), var(--accent-light));color:#fff;border-radius:10px;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.2rem;font-weight:800;display:flex}.logo-section h1{font-size:1.3rem;font-weight:800}.sync-status{justify-content:space-between;align-items:center;display:flex}.status-badge{text-transform:capitalize;border-radius:20px;align-items:center;gap:6px;padding:4px 10px;font-size:.7rem;font-weight:600;display:flex}.status-badge.synced{background:var(--green-dim);color:var(--green)}.status-badge.saving{background:var(--orange-dim);color:var(--orange)}.status-badge.error{background:var(--red-dim);color:var(--red)}.status-badge .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.icon-btn{background:var(--bg-elevated);border:1px solid var(--border);width:32px;height:32px;color:var(--text-secondary);border-radius:var(--radius-sm);justify-content:center;align-items:center;transition:all .2s;display:flex}.icon-btn:hover{color:var(--accent-light);border-color:var(--accent)}.add-task-box{border-bottom:1px solid var(--border);gap:8px;padding:16px 20px;display:flex}.add-task-input{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);outline:none;flex:1;padding:10px 14px;transition:border-color .2s}.add-task-input:focus{border-color:var(--accent)}.add-task-btn{background:var(--accent);color:#fff;border-radius:var(--radius-sm);justify-content:center;align-items:center;width:38px;height:38px;transition:all .2s;display:flex}.add-task-btn:hover{background:var(--accent-light);transform:scale(1.05)}.task-list{flex:1;padding:12px 0;overflow-y:auto}.task-item{cursor:grab;border-left:3px solid #0000;align-items:center;gap:10px;padding:8px 16px 8px 12px;transition:background .2s;display:flex}.task-item:hover{background:var(--bg-card)}.task-item.dragging{opacity:.4}.task-color{border-radius:3px;flex-shrink:0;width:10px;height:10px}.task-item-info{flex:1;min-width:0}.task-item-name-input{width:100%;color:var(--text-primary);cursor:text;background:0 0;border:none;outline:none;padding:2px 0;font-family:inherit;font-size:.82rem;font-weight:600}.task-item-name-input:focus{border-bottom:1px solid var(--accent)}.task-delete-btn{opacity:0;color:var(--text-muted);border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;font-size:.75rem;transition:opacity .15s,color .15s,background .15s;display:flex}.task-item:hover .task-delete-btn{opacity:1}.task-delete-btn:hover{color:var(--red);background:var(--red-dim)}.task-name{font-size:.85rem;font-weight:500}.empty-state{text-align:center;color:var(--text-muted);padding:2rem;font-size:.8rem}.main-content{flex:1;min-width:0;margin-left:320px;padding:32px;transition:margin-left .3s}.main-content.expanded{margin-left:0}.topbar{justify-content:space-between;align-items:center;margin-bottom:32px;display:flex}.stats-badges{gap:12px;display:flex}.badge{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);padding:6px 14px;font-size:.75rem;font-weight:600}.badge span{color:var(--accent-light);margin-left:4px;font-size:.95rem;font-weight:800}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:32px;display:grid}.stat-card{padding:20px}.stat-card .label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.7rem;font-weight:600}.stat-card .value{margin-top:8px;font-size:1.8rem;font-weight:800}.stat-card.accent .value{color:var(--accent-light)}.stat-card.green .value{color:var(--green)}.progress-section{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);margin-bottom:24px;overflow:hidden}.section-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 20px;display:flex}.section-header h3{align-items:center;gap:8px;font-size:.85rem;font-weight:700;display:flex}.section-header p{color:var(--text-muted);font-size:.65rem}
.pg-wrapper{border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border);overflow:hidden}.pg-scroll{width:100%;overflow-x:auto}.pg-scroll::-webkit-scrollbar{height:4px}.pg-scroll::-webkit-scrollbar-track{background:var(--bg-secondary)}.pg-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.pg-table{border-collapse:collapse;table-layout:fixed;min-width:max-content}.pg-table thead{z-index:10;position:sticky;top:0}.pg-task-col{z-index:21;background:var(--bg-elevated);text-align:left;letter-spacing:1px;width:130px;min-width:130px;max-width:130px;color:var(--text-muted);border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:8px 12px;font-size:.58rem;font-weight:700;position:sticky;left:0}.pg-day-col{background:var(--bg-elevated);text-align:center;border-bottom:1px solid var(--border);border-right:1px solid var(--border);width:36px;min-width:36px;max-width:36px;padding:6px 2px}.pg-day-col.pg-today-col{background:var(--accent)}.pg-day-col.pg-future-col{background:var(--bg-secondary);opacity:.7}.pg-col-dnum{color:var(--text-secondary);font-size:.65rem;font-weight:800;line-height:1.3;display:block}.pg-today-col .pg-col-dnum{color:#fff}.pg-col-date{color:var(--text-muted);font-size:.52rem;line-height:1.2;display:block}.pg-today-col .pg-col-date{color:#fffc}.pg-row:hover .pg-task-name-cell,.pg-row:hover td{background:var(--bg-card-hover)}.pg-task-name-cell{z-index:5;background:var(--bg-card);border-right:1px solid var(--border);border-bottom:1px solid var(--border);width:130px;min-width:130px;max-width:130px;padding:8px 12px;transition:background .2s;position:sticky;left:0}.pg-task-label{white-space:nowrap;text-overflow:ellipsis;margin-bottom:2px;font-size:.75rem;font-weight:700;display:block;overflow:hidden}.pg-streak-label{color:var(--text-muted);font-size:.58rem;display:block}.pg-cell{text-align:center;vertical-align:middle;border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:var(--bg-card);cursor:pointer;width:36px;min-width:36px;max-width:36px;height:40px;transition:background .15s}.pg-cell.pg-cell-today{background:var(--accent-dim)}.pg-check{border:2px solid;border-radius:5px;justify-content:center;align-items:center;width:22px;height:22px;margin:0 auto;transition:transform .15s;display:flex}.pg-cell:hover .pg-check{transform:scale(1.1)}.pg-miss{border:1.5px solid var(--red-dim);background:var(--red-dim);opacity:.7;border-radius:5px;justify-content:center;align-items:center;width:22px;height:22px;margin:0 auto;display:flex}.pg-empty{border:2px solid var(--border-light);background:var(--bg-elevated);border-radius:5px;width:22px;height:22px;margin:0 auto;transition:border-color .15s,background .15s}.pg-empty.pg-empty-today{border-color:var(--accent)}.pg-cell:hover .pg-empty{border-color:var(--accent-light);background:var(--accent-dim)}.pg-empty-msg{text-align:center;color:var(--text-muted);padding:40px;font-size:.85rem}
.graph-container{margin-top:24px;padding:24px}.graph-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.graph-header h3{font-size:1.1rem;font-weight:700}.graph-tabs{background:var(--bg-elevated);border-radius:var(--radius-sm);gap:8px;padding:4px;display:flex}.graph-tab{color:var(--text-secondary);border-radius:6px;padding:6px 16px;font-size:.75rem;font-weight:600;transition:all .2s}.graph-tab:hover{color:var(--text-primary)}.graph-tab.active{background:var(--bg-card);color:var(--text-primary);box-shadow:0 2px 8px #0003}.gh-scroll-wrapper{padding-bottom:16px;overflow-x:auto}.gh-scroll-wrapper::-webkit-scrollbar{height:6px}.gh-scroll-wrapper::-webkit-scrollbar-track{background:var(--bg-elevated);border-radius:4px}.gh-scroll-wrapper::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.gh-grid{grid-template-rows:repeat(7,14px);grid-auto-columns:14px;grid-auto-flow:column;gap:4px;min-width:max-content;display:grid}.gh-cell{cursor:pointer;border-radius:3px;flex-shrink:0;width:14px;height:14px;transition:transform .15s}.gh-cell:hover{outline:2px solid var(--accent-light);outline-offset:1px;transform:scale(1.2)}.gh-cell.l0{background:var(--gh-empty)}.gh-cell.l1{background:var(--gh-l1)}.gh-cell.l2{background:var(--gh-l2)}.gh-cell.l3{background:var(--gh-l3)}.gh-cell.l4{background:var(--gh-l4)}.gh-legend{color:var(--text-muted);justify-content:flex-end;align-items:center;gap:6px;margin-top:16px;font-size:.7rem;display:flex}.placeholder-view{text-align:center;color:var(--text-muted);background:var(--bg-elevated);border-radius:var(--radius-sm);border:1px dashed var(--border);padding:40px;font-size:.9rem}
