:root{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#111827;background-color:#e5e7eb}*,*:before,*:after{box-sizing:border-box}body{margin:0;height:100vh;background-color:#e5e7eb;color:#111827;overflow:hidden}#root{min-height:100vh}.app-root{display:flex;flex-direction:column;height:100vh}.app-header{flex:0 0 auto;background:#e5e7eb;padding:.75rem .75rem .5rem}.app-header h1{margin:0;font-size:1.25rem;font-weight:600}.app-main{flex:1 1 auto;display:flex;flex-direction:column;min-height:0}.toolbar{display:flex;gap:.5rem}.top-controls-row{display:flex;align-items:center;justify-content:space-between;background:transparent;padding-top:.5rem}.canvas-scroll{flex:1 1 auto;min-height:0;overflow:hidden}.canvas-scroll-inner{width:100%;height:100%;min-width:0;min-height:0;display:flex;flex-direction:column;box-sizing:border-box}.toolbar-button{width:40px;height:40px;border-radius:999px;border:none;outline:none;background:linear-gradient(135deg,#13d119,#13d179,#13cbd1);color:#fff;font-size:1.1rem;font-weight:600;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 24px #13d17999;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.toolbar-button:hover:not(.toolbar-button-disabled){transform:translateY(-1px);box-shadow:0 10px 28px #13d179bf;filter:brightness(1.03)}.toolbar-button:active:not(.toolbar-button-disabled){transform:translateY(1px) scale(.97);box-shadow:0 4px 14px #13d1798c;filter:brightness(.98)}.toolbar-button-disabled{background:#e5e7eb;color:#9ca3af;box-shadow:none;cursor:default}.toolbar-button-secondary{background:#111827;box-shadow:0 8px 24px #11182759}.toolbar-button-secondary:hover:not(.toolbar-button-disabled){box-shadow:0 10px 28px #11182773}.toolbar-button-danger{background:#b91c1c;box-shadow:0 8px 24px #b91c1c59}.toolbar-button-danger:hover:not(.toolbar-button-disabled){box-shadow:0 10px 28px #b91c1c73}.ledger-buttons{display:flex;gap:.5rem}.ledger-button{border:none;border-radius:999px;padding:.55rem .85rem;font-size:.85rem;font-weight:700;color:#fff;cursor:pointer;background:linear-gradient(135deg,#13d119,#13d179,#13cbd1);box-shadow:0 8px 24px #13d17999;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.ledger-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 28px #13d179bf;filter:brightness(1.03)}.ledger-button:active:not(:disabled){transform:translateY(1px) scale(.97);box-shadow:0 4px 14px #13d1798c;filter:brightness(.98)}.ledger-button-disabled{background:#e5e7eb;color:#9ca3af;box-shadow:none;cursor:default}.icon-button{display:flex;align-items:center;justify-content:center;padding:.6rem .75rem}.icon-button svg{display:block}.ledger-backdrop{position:fixed;inset:0;background-color:#0f172a59;display:flex;align-items:center;justify-content:center;z-index:25}.ledger-modal{width:620px;max-width:92vw;background:linear-gradient(135deg,#13d119,#13d179 45%,#13cbd1);border-radius:1rem;border:1px solid rgba(255,255,255,.35);box-shadow:0 24px 48px #0f172a59,inset 0 0 0 1px #ffffff40;padding:.9rem}.ledger-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.ledger-title{margin:0;font-size:1.05rem;font-weight:800;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.25),0 0 12px rgba(255,255,255,.35)}.ledger-close{border:none;background:transparent;font-size:1.4rem;line-height:1;cursor:pointer;color:#fff;padding:.25rem .35rem;border-radius:.5rem}.ledger-close:hover{background:#f3f4f6;color:#111827}.ledger-table{border:1px solid #e5e7eb;border-radius:.75rem;overflow:hidden;background:#fff}.ledger-row{display:grid;grid-template-columns:150px 1fr 44px;gap:0;width:100%}.ledger-row-header{background:#f9fafb;font-weight:700;font-size:.8rem;color:#374151}.ledger-row-item{border:none;background:#fff;text-align:left;cursor:pointer;padding:0}.ledger-row-item:hover{background:#f3f4f6}.ledger-cell{padding:.65rem .75rem;border-top:1px solid #e5e7eb;font-size:.88rem;color:#111827}.ledger-row-header .ledger-cell{border-top:none}.ledger-cell-date{color:#4b5563}.ledger-empty{padding:1rem;font-size:.9rem;color:#6b7280}.ledger-rows-scroll{max-height:360px;overflow-y:auto}.ledger-cell-action{display:flex;align-items:center;justify-content:center}.ledger-row-x{width:28px;height:28px;border-radius:8px;border:none;background:transparent;color:#b91c1c;font-size:1.25rem;line-height:1;cursor:pointer}.ledger-row-x:hover{background:#fee2e2}.general-canvas{flex:1;width:100%;height:100%;padding:.5rem;overflow:hidden;min-height:0;min-width:0}.general-canvas-pan{transform-origin:top left;will-change:transform}.general-canvas-inner{transform-origin:top left;display:flex;flex-direction:column;will-change:transform}.canvas-row{display:flex;gap:.75rem}.canvas-row-top{flex:1;height:100%;gap:.75rem;padding:0 16px 16px 0;box-sizing:border-box}.canvas-row-top .canvas{flex:1;width:auto;height:100%}.canvas-grid{height:100%;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:45% 55%;gap:16px}.canvas-grid .canvas{width:100%;height:100%}.canvas{width:100%;padding:1rem;background:#f9fafb;border:1px solid #d1d5db;border-radius:12px;min-height:0;position:relative;overflow:hidden;box-shadow:0 1px 2px #0000000f;display:flex;flex-direction:column}body.tc-dragging-task .canvas{overflow:visible}.canvas.tc-dragging-source-canvas{position:relative;z-index:9999}body.tc-dragging-task .task-card-dragging{z-index:10000}.canvas-title{font-size:.9rem;font-weight:600;margin-bottom:.5rem}.tasks-container{margin-top:.5rem;position:relative;flex:1}.fab-plus-button{position:fixed;bottom:1.75rem;left:1.75rem;width:2.75rem;height:2.75rem;border-radius:999px;border:none;background:linear-gradient(180deg,#13d119,#13d179,#13cbd1);color:#fff;font-size:1.6rem;font-weight:700;line-height:0;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 10px #13d11940,0 8px 20px #13cbd140;transition:transform .14s ease,box-shadow .14s ease,filter .14s ease;z-index:15}.fab-plus-button:before{content:"";position:absolute;inset:-8px;border-radius:inherit;background:radial-gradient(circle,#13d11961,#13cbd10f);z-index:-1;filter:blur(8px)}.fab-plus-button:hover{transform:translateY(-2px);filter:brightness(1.06);box-shadow:0 6px 14px #13d11959,0 10px 28px #13cbd140}.fab-plus-button:active{transform:translateY(1px);filter:brightness(.96);box-shadow:0 3px 8px #13d11933,0 6px 15px #13cbd12e}.create-chooser{position:fixed;bottom:3.8rem;left:3.8rem;padding:.4rem;border-radius:.5rem;background-color:#fff;border:1px solid #d4d4d8;box-shadow:0 10px 25px #0f172a26;display:flex;flex-direction:column;gap:.25rem;min-width:9rem;z-index:14}.create-chooser-item{padding:.35rem .6rem;border-radius:.4rem;border:none;background-color:transparent;font-size:.85rem;text-align:left;cursor:pointer}.create-chooser-item:hover{background-color:#f3f4f6}.task-card{width:128px;height:64px;border-radius:.5rem;border:1px solid #e5e7eb;padding:.35rem .4rem;box-shadow:0 1px 4px #0f172a0d;background-color:#fff;display:flex;flex-direction:column;justify-content:space-between;font-size:.72rem;position:absolute;cursor:grab;-webkit-user-select:none;user-select:none;transition:left .18s ease,top .18s ease,box-shadow .12s ease,transform .12s ease,background-color .15s ease,border-color .15s ease;z-index:1}body.tc-project-dragging .task-card{transition:none!important}.task-new-badge{position:absolute;top:-8px;right:-8px;width:18px;height:18px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;color:#fff;background:linear-gradient(135deg,#13d119,#13d179,#13cbd1);box-shadow:0 6px 16px #13d17980;pointer-events:none}.task-card-color-default{background-color:#fff;border-color:#e5e7eb}.task-card-color-green{background-color:#38ff8b;border-color:#008d34}.task-card-color-yellow{background-color:#fff155;border-color:#facc15}.task-card-color-orange{background-color:#fc9c42;border-color:#ff7402}.task-card-color-red{background-color:#ff6969;border-color:#eb1e1e}.task-card-title{font-weight:600;margin-bottom:.15rem;font-size:.75rem;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;max-height:calc(1.2em * 3)}.task-card-title-hidden{visibility:hidden}.task-card-dates{font-size:.7rem;color:#4b5563;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.task-card-header{display:flex;align-items:center;justify-content:space-between;gap:.25rem}.task-card-menu-trigger{border:none;background:transparent;cursor:pointer;padding:0;line-height:1;font-size:1rem;color:#6b7280}.task-card-menu-trigger:hover{color:#111827}.task-card-menu{position:absolute;z-index:10;min-width:140px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 10px 25px #0f172a26;padding:6px}.open-down{top:100%}.open-up{bottom:100%}.open-left{right:0}.open-right{left:0}.task-card-menu-item{width:100%;padding:.3rem .6rem;border:none;background:none;text-align:left;font-size:.72rem;cursor:pointer}.task-card-menu-item:hover{background-color:#f3f4f6}.task-card-menu-item-danger{color:#b91c1c}.task-card-menu-item-danger:hover{background-color:#fee2e2}.task-card-dragging{box-shadow:0 12px 24px #0f172a40;transform:scale(1.05);z-index:1000;cursor:grabbing;transition:none}.modal-backdrop{position:fixed;inset:0;background-color:#0f172a59;display:flex;align-items:center;justify-content:center;z-index:30}.modal{width:420px;max-width:90vw;background-color:#fff;border-radius:.75rem;border:1px solid #e5e7eb;box-shadow:0 20px 40px #0f172a40;padding:1rem 1.1rem .9rem}.modal-header h2{margin:0 0 .75rem;font-size:1rem;font-weight:600}.modal-body{display:flex;flex-direction:column;gap:.75rem;margin-bottom:.75rem}.modal-field{display:flex;flex-direction:column;gap:.25rem}.modal-field-group{display:flex;gap:.75rem}.modal-field label{font-size:.8rem;color:#4b5563}.modal-field input,.modal-field select{border-radius:.4rem;border:1px solid #d4d4d8;padding:.4rem .5rem;font-size:.8rem;outline:none}.modal-field input:focus,.modal-field select:focus{border-color:#13d179;box-shadow:0 0 0 1px #13d17966}.modal-footer{display:flex;justify-content:flex-end;gap:.5rem}.modal-button{border-radius:999px;border:1px solid transparent;padding:.4rem .9rem;font-size:.8rem;cursor:pointer}.modal-button.secondary{background-color:#f3f4f6;border-color:#d4d4d8;color:#374151}.modal-button.secondary:hover{background-color:#e5e7eb}.modal-button.primary{background:linear-gradient(135deg,#13d119,#13d179,#13cbd1);color:#fff;border:none;box-shadow:0 4px 10px #13d17959}.modal-button.primary:hover{box-shadow:0 6px 14px #13d17973;transform:translateY(-1px)}.modal-button.primary:active{box-shadow:0 3px 8px #13d17959;transform:translateY(1px)}.modal-button.danger{background:#b91c1c;color:#fff}.modal-button.danger:hover{background:#991b1b}.subtask-row{display:flex;align-items:center;gap:.4rem;margin-bottom:.25rem}.subtask-checkbox{margin:0}.subtask-input{flex:1;border-radius:.4rem;border:1px solid #d4d4d8;padding:.25rem .4rem;font-size:.8rem}.subtask-input-done{text-decoration:line-through;color:#9ca3af}.subtask-delete{border:none;background:transparent;color:#9ca3af;font-size:1.1rem;padding:0 .25rem;cursor:pointer}.subtask-delete:hover{color:#ef4444}.project{position:absolute;background:#f1f2f4;border:1px solid #d6d8dd;border-radius:12px;overflow:hidden}.project-header{height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;background:#e9eaee;cursor:grab;-webkit-user-select:none;user-select:none;border-top-left-radius:12px;border-top-right-radius:12px}.project-header:active{cursor:grabbing}.project-title{font-weight:600;font-size:14px}.project-menu-button{border:none;background:transparent;cursor:pointer;font-weight:700;padding:4px 8px;border-radius:8px}.project-menu-button:hover{background:#0000000f}.project-menu-trigger{width:28px;height:28px;border:none;background:transparent;border-radius:8px;cursor:pointer;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center}.project-menu-trigger:hover{background:#0000000f}.project-menu{position:absolute;top:36px;right:10px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 10px 20px #0000001f;min-width:160px;padding:6px;z-index:50}.project-menu-item{width:100%;border:none;background:transparent;text-align:left;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:14px}.project-menu-item:hover{background:#0000000f}.project-menu-item-danger{color:#b91c1c}.project-resize-handle{position:absolute;right:6px;bottom:6px;width:14px;height:14px;cursor:se-resize;background:transparent}.project-resize-handle:after{content:"";position:absolute;right:2px;bottom:2px;width:10px;height:10px;border-right:2px solid #9ca3af;border-bottom:2px solid #9ca3af;border-radius:2px}.project-resize-handle:hover:after{border-color:#4b5563}.tc-confetti-burst{position:fixed;left:0;top:0;pointer-events:none;z-index:999999}.tc-confetti-piece{position:absolute;left:0;top:0;width:7px;height:3px;border-radius:2px;opacity:0;transform:translate(0) rotate(0);animation:tc-confetti-fly .7s ease-out forwards;will-change:transform,opacity}@keyframes tc-confetti-fly{0%{opacity:1;transform:translate(0) rotate(0)}85%{opacity:1}to{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--rot))}}.canvas-empty-state{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.9rem;color:#6b7280;pointer-events:none}.canvas-empty-sub{font-size:.8rem;margin-top:.25rem;color:#9ca3af}.project-empty-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.85rem;color:#9ca3af;pointer-events:none}.modal-text{margin-top:0}.modal-text-last{margin-bottom:0}.modal-footer-actions{display:flex;gap:8px}.general-canvas{touch-action:none;overscroll-behavior:none}.task-card,.project{touch-action:none}
