:root{--tf-bg-primary:#ffffff;--tf-bg-secondary:#f7f7f5;--tf-bg-tertiary:#efedea;--tf-text-primary:#1a1a1a;--tf-text-secondary:#6b6b6b;--tf-text-tertiary:#9b9b9b;--tf-border:#e5e3df;--tf-border-hover:#d0cec9;--tf-radius:10px;--tf-radius-lg:14px;--tf-font:"Segoe UI",-apple-system,system-ui,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body,html{font-family:var(--tf-font);background:var(--tf-bg-secondary);color:var(--tf-text-primary);-webkit-font-smoothing:antialiased;min-height:100dvh}.app-shell{max-width:960px;margin:0 auto;padding:20px 16px 80px}.app-header{justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}.app-header,.app-title{display:flex;align-items:center}.app-title{font-size:22px;font-weight:600;gap:8px}.app-stats{font-size:13px;color:var(--tf-text-secondary);margin-top:2px}.toolbar{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.view-switcher{display:flex;border-radius:8px;overflow:hidden;border:1px solid var(--tf-border)}.view-btn{padding:7px 14px;font-size:13px;border:none;cursor:pointer;background:var(--tf-bg-primary);color:var(--tf-text-secondary);font-weight:400;transition:all .15s;font-family:var(--tf-font)}.view-btn:not(:last-child){border-right:1px solid var(--tf-border)}.view-btn.active{background:var(--tf-bg-secondary);font-weight:500}.btn,.view-btn.active{color:var(--tf-text-primary)}.btn{padding:7px 16px;border-radius:8px;font-size:13px;cursor:pointer;border:1px solid var(--tf-border);background:var(--tf-bg-primary);font-family:var(--tf-font);transition:all .15s}.btn:hover{border-color:var(--tf-border-hover);background:var(--tf-bg-secondary)}.btn-primary{background:#378ADD;color:#fff;border-color:#378ADD}.btn-primary:hover{background:#2a75c0;border-color:#2a75c0}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-danger{color:#A32D2D;border-color:#F09595}.btn-danger:hover{background:#FCEBEB}.btn-new{padding:8px 18px;font-size:14px;font-weight:500}.btn-close{background:none;border:none;font-size:18px;cursor:pointer;color:var(--tf-text-tertiary);padding:4px}.btn-nav{background:var(--tf-bg-secondary);border:1px solid var(--tf-border);border-radius:8px;padding:4px 12px;cursor:pointer;font-size:16px;color:var(--tf-text-primary)}.btn-signout{background:none;border:none;font-size:13px;color:var(--tf-text-secondary);cursor:pointer;padding:4px 8px}.btn-signout:hover,.form-input{color:var(--tf-text-primary)}.form-input{width:100%;padding:9px 12px;border-radius:8px;font-size:14px;border:1px solid var(--tf-border);outline:none;background:var(--tf-bg-primary);margin-bottom:14px;font-family:var(--tf-font);transition:border-color .15s}.form-input:focus{border-color:#378ADD}.form-textarea{resize:vertical;line-height:1.5}.form-label{display:block;font-size:12px;font-weight:500;color:var(--tf-text-secondary);margin-bottom:4px}.form-title{margin:0;font-size:18px;font-weight:600}.form-actions{display:flex;gap:10px;margin-top:20px;align-items:center}.search-input{width:160px}.filter-select,.search-input{margin:0;padding:7px 10px;font-size:13px}.filter-select{width:auto}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:999;animation:fadeIn .15s ease;padding:16px}.modal-content{border-radius:16px;width:min(440px,100%);max-height:85vh;overflow:auto;padding:1.5rem;animation:slideUp .2s ease}.modal-content,.task-card{background:var(--tf-bg-primary);border:1px solid var(--tf-border)}.task-card{border-radius:var(--tf-radius);cursor:-webkit-grab;cursor:grab;transition:border-color .15s,transform .1s;margin-bottom:6px}.task-card:hover{border-color:var(--tf-border-hover)}.task-card:active{cursor:-webkit-grabbing;cursor:grabbing;transform:scale(.98)}.tag-date{font-size:11px;padding:1px 6px;border-radius:4px;background:var(--tf-bg-secondary);color:var(--tf-text-secondary)}.board-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px}@media (max-width:700px){.board-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:400px){.board-grid{grid-template-columns:1fr}}.board-column{border-radius:12px;padding:10px;min-height:200px;transition:background .2s}.board-column-header{display:flex;align-items:center;gap:6px;margin-bottom:10px;padding:2px 4px}.board-count{font-size:11px;padding:1px 7px;border-radius:10px;margin-left:auto}.table-wrap{border-radius:12px;border:1px solid var(--tf-border);overflow:hidden}.task-table{width:100%;border-collapse:collapse;font-size:14px}.task-table th{font-size:12px;font-weight:500;color:var(--tf-text-secondary);padding:10px 12px;text-align:left;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-bottom:1px solid var(--tf-border);background:var(--tf-bg-secondary);white-space:nowrap}.task-table th.th-active{color:var(--tf-text-primary)}.task-table td{padding:10px 12px;border-bottom:1px solid var(--tf-border)}.task-table tbody tr{cursor:pointer;transition:background .1s}.task-table tbody tr:hover{background:var(--tf-bg-secondary)}.task-table tbody tr:last-child td{border-bottom:none}.cat-badge{font-size:12px;padding:2px 8px;border-radius:6px;white-space:nowrap}.td-date{font-size:13px;color:var(--tf-text-secondary)}.td-empty{padding:30px;text-align:center;color:var(--tf-text-tertiary);font-size:13px}.cal-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:14px}.cal-month-label{font-size:15px;font-weight:500;min-width:160px;text-align:center}.cal-header-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:2px;gap:2px;margin-bottom:4px}.cal-header-cell{font-size:11px;font-weight:500;color:var(--tf-text-tertiary);text-align:center;padding:4px}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:3px;gap:3px}.cal-cell{border:1px solid var(--tf-border);border-radius:8px;padding:4px 6px;min-height:75px}.cal-day-num{font-size:12px;margin-bottom:2px}.cal-task{font-size:11px;padding:1px 4px;border-radius:4px;margin-bottom:2px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal-task:hover{opacity:.8}.cal-more{font-size:10px;color:var(--tf-text-tertiary)}.auth-container{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card{background:var(--tf-bg-primary);border-radius:16px;border:1px solid var(--tf-border);padding:2rem;width:min(380px,100%)}.auth-header{text-align:center;margin-bottom:24px}.auth-title{font-size:24px;font-weight:600;margin:8px 0 4px}.auth-subtitle{font-size:14px;color:var(--tf-text-secondary)}.auth-tabs{display:flex;gap:0;margin-bottom:20px;border-radius:8px;overflow:hidden;border:1px solid var(--tf-border)}.auth-tab{flex:1 1;padding:8px;font-size:13px;border:none;cursor:pointer;background:var(--tf-bg-primary);color:var(--tf-text-secondary);font-family:var(--tf-font);transition:all .15s}.auth-tab.active{background:var(--tf-bg-secondary);color:var(--tf-text-primary);font-weight:500}.auth-error{color:#A32D2D}.auth-error,.auth-success{font-size:13px;margin-top:8px}.auth-success{color:#27500A}.auth-submit{width:100%;margin-top:16px;padding:10px;font-size:14px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.loading-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;color:var(--tf-text-secondary);font-size:14px}