.app-shell{display:flex;min-height:100vh;background:#faf7f5}.app-sidebar{width:200px;flex-shrink:0;padding:20px 14px;background:#fffdfb;border-right:1px solid #f0e9e6}.app-sidebar h2{font-size:1.05em;margin:4px 8px 20px;color:#6f3f9e}.app-nav{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.app-nav-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:#6b5f5c;font-weight:600;font-size:.92em;text-decoration:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;outline:none;transition:background-color .15s ease,color .15s ease}.app-nav-link:hover{background:#f5eeea}.app-nav-link:focus-visible{box-shadow:0 0 0 2px #c6a3e0}.app-nav-link.active{background:linear-gradient(135deg,#8fc7ea,#a9b8ed);color:#fff}.app-nav-icon{font-size:1.05em}.app-main{flex:1;padding:24px;min-width:0}@media (max-width: 700px){.app-shell{flex-direction:column;min-height:100vh}.app-sidebar{width:100%;flex-shrink:1;padding:10px 12px;border-right:none;border-bottom:1px solid #f0e9e6}.app-sidebar h2{margin:0 4px 8px;font-size:.95em}.app-nav{flex-direction:row;flex-wrap:wrap;gap:6px}.app-nav-link{padding:8px 10px;font-size:.85em}.app-main{padding:14px;min-width:0;overflow-x:hidden}}.projects-form{display:flex;flex-direction:column;gap:8px;margin-bottom:24px;background:#fff;border-radius:14px;padding:14px 16px;box-shadow:0 2px 12px #3c324614}.projects-form-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.projects-picker-label{font-size:.85em;color:#5a5250}.project-icon-swatch{width:30px;height:30px;border-radius:8px;border:2px solid transparent;background:#f5eeea;cursor:pointer;font-size:1em;padding:0}.project-icon-swatch.selected{border-color:#3e4fa3}.project-icon-auto{width:auto;padding:0 10px;font-size:.75em;color:#5a5250}.project-color-swatch{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}.project-color-swatch.selected{border-color:#3e4fa3}.project-color-auto{width:auto;height:24px;border-radius:12px;padding:0 10px;font-size:.75em;background:#f2eae7;color:#5a5250}.projects-search{margin-bottom:16px}.projects-search input{width:100%;max-width:360px;padding:8px 12px}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.project-card{position:relative;text-align:left;border:1px solid;border-left-width:4px;border-radius:12px;padding:14px 16px;cursor:pointer;font-family:inherit;transition:transform .12s ease,box-shadow .12s ease;-webkit-tap-highlight-color:transparent;outline:none}.project-card-actions{position:absolute;top:8px;right:8px;display:flex;gap:4px;opacity:0;transition:opacity .12s ease}.project-card:hover .project-card-actions,.project-card:focus-within .project-card-actions{opacity:1}.project-card-action-btn{width:24px;height:24px;border:none;border-radius:50%;background:#ffffffb3;color:inherit;cursor:pointer;font-size:.75em;line-height:1;transition:background-color .12s ease;-webkit-tap-highlight-color:transparent;outline:none}.project-card-action-btn:hover{background:#fffffff2}.project-card:hover{transform:translateY(-2px);box-shadow:0 4px 14px #3c32461f}.project-card:focus-visible{box-shadow:0 0 0 3px #c6a3e080}.project-card-selected{box-shadow:0 0 0 2px currentColor}.project-card-name{font-weight:700;font-size:1.02em;margin-bottom:4px}.project-card-desc{font-size:.85em;opacity:.85;margin-bottom:10px}.project-card-hint{font-size:.76em;opacity:.7}.season-spring{--accent: #f5a3b3;--accent-text: #b23a55}.season-summer{--accent: #8fc7ea;--accent-text: #1f6c99}.season-autumn{--accent: #f0ae7e;--accent-text: #b0602a}.season-winter{--accent: #c6a3e0;--accent-text: #6f3f9e}.calendar-toolbar{position:relative;display:flex;align-items:center;gap:8px;margin-bottom:10px}.calendar-toolbar button{background:var(--accent);border:none;color:#fff;border-radius:10px;padding:6px 14px;font-weight:600;cursor:pointer;-webkit-tap-highlight-color:transparent;outline:none}.calendar-toolbar button:hover{filter:brightness(.95)}.calendar-nav-btn{padding:6px 12px!important;font-size:1.1em;line-height:1}.calendar-title-btn{color:var(--accent-text)!important;background:#fff!important;border:1px solid var(--accent)!important;font-size:1.05em}.calendar-picker-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.calendar-date-picker{position:absolute;top:44px;left:90px;z-index:41;background:#fff;border-radius:12px;box-shadow:0 6px 20px #00000026;padding:10px;display:flex;gap:8px}.calendar-date-picker select{border-radius:8px;padding:6px 8px}.fc{background:#fff;border-radius:16px;padding:16px;border:1px solid #f0e9e6}.fc .fc-day-today{background-color:#faf7f5!important}.fc-daygrid-day-frame{border-radius:8px;cursor:pointer;transition:background-color .15s ease}.fc-daygrid-day-frame:hover{background-color:#f5eeea}.fc-event{border-radius:999px!important;border-width:1px!important;padding:1px 8px;font-size:.78em;font-weight:600;max-width:100%;overflow:hidden}.fc-event .fc-event-main{overflow:hidden}.fc-event-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.fc-event-custom-content{display:flex;align-items:center;gap:4px;overflow:hidden;min-width:0}.fc-event-status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.fc-event-title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.fc-event.fc-event-dragging{opacity:.75}.fc-daygrid-day-number,.fc-col-header-cell-cushion{color:inherit;font-weight:600}.fc-daygrid-day-top{flex-direction:row;justify-content:center;padding-top:4px}.fc-daygrid-day-number{float:none;display:flex;align-items:center}.day-panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e141947;display:flex;justify-content:flex-end;z-index:50}.day-panel{width:340px;max-width:90vw;height:100%;background:#fffdfb;box-shadow:-6px 0 24px #0000001f;padding:20px;overflow-y:auto;animation:slide-in .18s ease-out}@keyframes slide-in{0%{transform:translate(24px);opacity:0}to{transform:translate(0);opacity:1}}.day-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.day-panel-header h3{margin:0;font-size:1.05em}.day-panel-close{border:none;background:#f2eae7;border-radius:50%;width:28px;height:28px;cursor:pointer;font-size:.85em;color:#7a6f6c}.day-panel-empty{color:#a89c99;font-size:.9em}.day-panel-section h4{font-size:.82em;color:#a89c99;margin:16px 0 8px;text-transform:uppercase;letter-spacing:.04em}.day-panel-item{border:1px solid;border-left-width:4px;border-radius:10px;padding:8px 12px;margin-bottom:8px}.day-panel-item-row{display:flex;align-items:flex-start;justify-content:space-between;gap:6px}.day-panel-item-title{font-weight:700;font-size:.92em}.day-panel-item-actions{flex-shrink:0;display:flex;gap:4px}.day-panel-item-icon-btn{flex-shrink:0;border:none;background:#fff9;color:inherit;border-radius:50%;width:20px;height:20px;font-size:.7em;cursor:pointer;opacity:0;transition:opacity .12s ease,background-color .12s ease;-webkit-tap-highlight-color:transparent;outline:none}.day-panel-item:hover .day-panel-item-icon-btn{opacity:1}.day-panel-item-icon-btn:hover{background:#fffffff2}.day-panel-item-time{font-size:.78em;opacity:.85;margin-top:2px}.day-panel-item-description{font-size:.78em;opacity:.85;margin-top:4px;white-space:pre-wrap}.day-panel-add-buttons{display:flex;flex-direction:column;gap:8px;margin-top:16px}.day-panel-add-form{display:flex;flex-direction:column;gap:8px;margin-top:16px;background:#faf7f5;border-radius:10px;padding:12px}.day-panel-add-form h4{margin:0 0 2px;font-size:.85em;color:#6b5f5c}.day-panel-add-form input,.day-panel-add-form select,.day-panel-add-form textarea{width:100%;font-family:inherit;resize:vertical}.day-panel-add-row{display:flex;align-items:center;gap:6px;font-size:.85em;color:#6b5f5c}.day-panel-add-row input{flex:1}.day-panel-add-error{color:#b23a55;font-size:.8em;margin:0}.day-panel-preset-row{display:flex;flex-wrap:wrap;gap:6px}.day-panel-preset-btn{border:1px solid #e5dcd8;background:#fff;color:#6b5f5c;border-radius:999px;padding:3px 10px;font-size:.78em;cursor:pointer}.day-panel-preset-btn:hover{background:#faf7f5;border-color:var(--accent);color:var(--accent-text)}.day-panel-color-row{flex-wrap:wrap}.day-panel-color-label{font-size:.85em;color:#6b5f5c}.today-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.7em;height:1.7em;padding:0 .3em;border-radius:999px;background:var(--accent);color:#fff}.day-panel-item-highlight{border-width:2px;box-shadow:0 0 0 3px #c6a3e073;animation:highlight-pulse 1.4s ease-in-out 2}@keyframes highlight-pulse{0%,to{box-shadow:0 0 0 3px #c6a3e073}50%{box-shadow:0 0 0 6px #c6a3e033}}._3_ygE{display:table;border-bottom:#e6e4e4 1px solid;border-top:#e6e4e4 1px solid;border-left:#e6e4e4 1px solid}._1nBOt{display:table-row;list-style:none}._2eZzQ{border-right:1px solid rgb(196,196,196);opacity:1;margin-left:-2px}._WuQ0f{display:table-cell;vertical-align:-webkit-baseline-middle;vertical-align:middle}._3ZbQT{display:table;border-bottom:#e6e4e4 1px solid;border-left:#e6e4e4 1px solid}._34SS0{display:table-row;text-overflow:ellipsis}._34SS0:nth-of-type(2n){background-color:#f5f5f5}._3lLk3{display:table-cell;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._nI1Xw{display:flex}._2QjE6{color:#565656;font-size:.6rem;padding:.15rem .2rem 0rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}._2TfEi{font-size:.6rem;padding-left:1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._3T42e{background:#fff;padding:12px;box-shadow:0 3px 6px #00000029,0 3px 6px #0000003b}._29NTg{font-size:12px;margin-bottom:6px;color:#666}._25P-K{position:absolute;display:flex;flex-shrink:0;pointer-events:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._3gVAq{visibility:hidden;position:absolute;display:flex;pointer-events:none}._1eT-t{overflow:hidden auto;width:1rem;flex-shrink:0;scrollbar-width:thin}._1eT-t::-webkit-scrollbar{width:1.1rem;height:1.1rem}._1eT-t::-webkit-scrollbar-corner{background:transparent}._1eT-t::-webkit-scrollbar-thumb{border:6px solid transparent;background:#0003;background:var(--palette-black-alpha-20, rgba(0, 0, 0, .2));border-radius:10px;background-clip:padding-box}._1eT-t::-webkit-scrollbar-thumb:hover{border:4px solid transparent;background:#0000004d;background:var(--palette-black-alpha-30, rgba(0, 0, 0, .3));background-clip:padding-box}._2dZTy{fill:#fff}._2dZTy:nth-child(2n){fill:#f5f5f5}._3rUKi{stroke:#ebeff2}._RuwuK{stroke:#e6e4e4}._9w8d5{text-anchor:middle;fill:#333;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}._1rLuZ{stroke:#e6e4e4}._2q1Kt{text-anchor:middle;fill:#555;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}._35nLX{fill:#fff;stroke:#e0e0e0;stroke-width:1.4}._KxSXS{cursor:pointer;outline:none}._KxSXS:hover ._3w_5u{visibility:visible;opacity:1}._3w_5u{fill:#ddd;cursor:ew-resize;opacity:0;visibility:hidden}._31ERP{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;stroke-width:0}._RRr13{cursor:pointer;outline:none}._2P2B1{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._1KJ6x{cursor:pointer;outline:none}._2RbVy{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:.6}._2pZMF{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._3zRJQ{fill:#fff;text-anchor:middle;font-weight:lighter;dominant-baseline:central;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}._3KcaM{fill:#555;text-anchor:start;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none}._CZjuD{overflow:hidden;font-size:0;margin:0;padding:0}._2B2zv{margin:0;padding:0;overflow:hidden}._3eULf{display:flex;padding:0;margin:0;list-style:none;outline:none;position:relative}._2k9Ys{overflow:auto;max-width:100%;scrollbar-width:thin;height:1.2rem}._2k9Ys::-webkit-scrollbar{width:1.1rem;height:1.1rem}._2k9Ys::-webkit-scrollbar-corner{background:transparent}._2k9Ys::-webkit-scrollbar-thumb{border:6px solid transparent;background:#0003;background:var(--palette-black-alpha-20, rgba(0, 0, 0, .2));border-radius:10px;background-clip:padding-box}._2k9Ys::-webkit-scrollbar-thumb:hover{border:4px solid transparent;background:#0000004d;background:var(--palette-black-alpha-30, rgba(0, 0, 0, .3));background-clip:padding-box}._19jgW{height:1px}.task-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e141952;display:flex;align-items:center;justify-content:center;z-index:60}.task-modal{width:460px;max-width:92vw;max-height:88vh;background:#fffdfb;border-radius:16px;box-shadow:0 12px 36px #0000002e;display:flex;flex-direction:column;animation:task-modal-in .15s ease-out}@keyframes task-modal-in{0%{transform:scale(.97);opacity:0}to{transform:scale(1);opacity:1}}.task-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #f0e9e6}.task-modal-header h3{margin:0;font-size:1.05em}.task-modal-close{border:none;background:#f2eae7;border-radius:50%;width:28px;height:28px;cursor:pointer;color:#7a6f6c}.task-modal-body{padding:16px 20px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.task-modal-row{display:flex;gap:12px}.task-modal-row .task-modal-field{flex:1}.task-modal-field{display:flex;flex-direction:column;gap:4px;font-size:.85em;color:#6b5f5c}.task-modal-field input,.task-modal-field select,.task-modal-field textarea{font-family:inherit;font-size:.95em;border:1px solid #e5dcd8;border-radius:8px;padding:6px 10px;resize:vertical;color:#3a332f}.task-modal-status-row{display:flex;align-items:center;gap:8px}.task-modal-status-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.task-modal-color-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.task-modal-progress-header{display:flex;align-items:center;justify-content:space-between}.task-modal-progress-value{font-weight:700;color:#3a332f}.task-modal-progress-bar{height:8px;border-radius:4px;background:#f0e9e6;overflow:hidden}.task-modal-progress-fill{height:100%;transition:width .15s ease}.task-modal-hint{margin:2px 0;font-size:.85em;color:#a89c99}.task-modal-checklist{display:flex;flex-direction:column;gap:4px;max-height:160px;overflow-y:auto}.task-modal-checklist-item{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:4px 2px}.task-modal-checklist-item label{display:flex;align-items:center;gap:8px;font-size:.9em;color:#3a332f;flex:1;min-width:0}.task-modal-checklist-item label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-modal-checklist-item label span.done{text-decoration:line-through;color:#a89c99}.task-modal-checklist-delete{flex-shrink:0;border:none;background:transparent;color:#a89c99;cursor:pointer;font-size:.8em;border-radius:50%;width:22px;height:22px}.task-modal-checklist-delete:hover{background:#f2eae7}.task-modal-checklist-add{display:flex;gap:6px;margin-top:6px}.task-modal-checklist-add input{flex:1;font-family:inherit;border:1px solid #e5dcd8;border-radius:8px;padding:6px 10px}.task-modal-error{color:#b23a55;font-size:.85em;margin:0}.task-modal-footer{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-top:1px solid #f0e9e6}.task-modal-danger{background:none;border:1px solid #f0c0c7;color:#b23a55;border-radius:8px;padding:6px 12px;cursor:pointer}.task-modal-danger:hover{background:#fce4e8}.task-modal-footer-right{display:flex;gap:8px}.gantt-page{display:flex;flex-direction:column;gap:16px}.gantt-header-bar{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#8fc7ea,#a9b8ed);color:#fff;padding:14px 20px;border-radius:14px}.gantt-header-bar h1{margin:0;font-size:1.15em}.gantt-header-bar select{border-radius:8px;border:none;padding:4px 8px}.gantt-header-controls{display:flex;align-items:center;gap:14px}.gantt-scope-toggle{display:flex;background:#ffffff40;border-radius:10px;padding:3px;gap:2px}.gantt-scope-toggle button{background:transparent;border:none;color:#fff;padding:5px 12px;border-radius:8px;cursor:pointer;font-weight:600;font-size:.85em}.gantt-scope-toggle button.active{background:#fff;color:#3e4fa3}.gantt-form{display:flex;flex-direction:column;gap:8px}.gantt-form-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.gantt-color-label{font-size:.85em;color:#5a5250}.gantt-color-swatch{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0}.gantt-color-swatch.selected{border-color:#3e4fa3}.gantt-color-auto{width:auto;height:24px;border-radius:12px;padding:0 10px;font-size:.75em;background:#f2eae7;color:#5a5250}.gantt-note-input{flex:1;min-width:220px;font-family:inherit;border:1px solid #e5dcd8;border-radius:8px;padding:6px 10px;resize:vertical}.gantt-panel{background:#fff;border-radius:14px;padding:16px;box-shadow:0 2px 12px #3c324614;max-width:100%;overflow-x:auto}.gantt-toolbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:12px}.gantt-legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:.85em;color:#5a5250}.gantt-legend-item{display:flex;align-items:center;gap:6px}.gantt-legend-toggle{cursor:pointer}.gantt-legend-swatch{width:12px;height:12px;border-radius:4px;display:inline-block}.gantt-view-modes{display:flex;align-items:center;gap:4px}.gantt-zoom{display:flex;align-items:center;gap:6px;margin-left:10px;font-size:.85em;color:#5a5250}.gantt-zoom input[type=range]{accent-color:#a9b8ed}.gantt-row-icon-btn{border:none;background:#f2eae7;color:#6b5f5c;border-radius:50%;width:20px;height:20px;font-size:.7em;cursor:pointer;flex-shrink:0;-webkit-tap-highlight-color:transparent;outline:none}.gantt-row-icon-btn:hover{background:#e5d9d4}@media (max-width: 700px){.gantt-header-bar{flex-wrap:wrap;gap:10px}}.gantt-tooltip{background:#fff;border:1px solid #eee;border-radius:10px;padding:10px 14px;box-shadow:0 4px 16px #0000001a;font-size:.85em}.schedule-page{display:flex;flex-direction:column;gap:16px}.schedule-header-bar{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#f5a3b3,#c6a3e0);color:#fff;padding:14px 20px;border-radius:14px}.schedule-header-bar h1{margin:0;font-size:1.15em}.schedule-header-bar select{border-radius:8px;border:none;padding:4px 8px}.schedule-timeline{display:flex;flex-direction:column;gap:18px}.schedule-day-group{background:#fff;border-radius:14px;padding:14px 18px;box-shadow:0 2px 12px #3c324614}.schedule-day-label{font-weight:700;color:#6b5f5c;margin-bottom:10px;font-size:.92em}.schedule-day-items{display:flex;flex-direction:column;gap:8px}.schedule-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid;border-left-width:4px;border-radius:10px;padding:8px 14px;text-align:left;cursor:pointer;font-family:inherit;width:100%;-webkit-tap-highlight-color:transparent;outline:none;transition:transform .1s ease}.schedule-item:hover{transform:translate(2px)}.schedule-item:focus-visible{box-shadow:0 0 0 3px #c6a3e080}.schedule-item-title{font-weight:700;font-size:.92em}.schedule-item-meta{font-size:.78em;opacity:.8;white-space:nowrap}.schedule-hint{font-size:.85em;color:#a89c99}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,PingFang TC,Microsoft JhengHei,sans-serif;color:#3f3735}button{font-family:inherit;-webkit-tap-highlight-color:transparent;outline:none}button:not([class]){background:#e5eafb;color:#3e4fa3;border:1px solid #a9b8ed;border-radius:8px;padding:6px 14px;font-weight:600;cursor:pointer;transition:filter .12s ease}button:not([class]):hover{filter:brightness(.96)}button:not([class]):disabled{opacity:.55;cursor:default}button:not([class]):focus-visible{box-shadow:0 0 0 2px #c6a3e0}input,select{font-family:inherit;border:1px solid #e5dcd8;border-radius:8px;padding:6px 10px}input:focus,select:focus{outline:none;border-color:#a9b8ed}a{color:#6f3f9e}
