:root{--bg:#f3f5f8;--card:#ffffff;--text:#1f2937;--muted:#6b7280;--line:#e5e7eb;--primary:#4f7cff;--primary-soft:#eaf0ff;--green:#22a06b;--green-soft:#e7f8f0;--orange:#f08c00;--danger:#dc2626}*{box-sizing:border-box}body,html{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif}button,input,select{font:inherit}button{cursor:pointer}.page{min-height:100vh;padding:20px 22px 44px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.app-tabs{display:flex;gap:8px;margin-bottom:16px}.app-tab{border:1px solid var(--line);border-radius:10px;padding:8px 14px;background:#fff;color:var(--muted);font-size:13px;text-decoration:none}.app-tab:hover{border-color:var(--primary);color:var(--primary)}.app-tab.active{border-color:var(--primary);background:var(--primary);color:#fff}.app-title h1{margin:0;font-size:26px;letter-spacing:.02em}.app-title p{margin:5px 0 0;color:var(--muted);font-size:13px}.month-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.month-title{min-width:128px;text-align:center;font-size:18px;font-weight:700}.danger-button,.ghost-button,.icon-button,.primary-button{border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:#fff;color:var(--text);transition:background .15s ease,border-color .15s ease}.icon-button{width:38px;padding:8px;font-size:18px;line-height:1}.ghost-button:hover,.icon-button:hover{background:#f7f8fa;border-color:#d5d9df}.primary-button{border-color:var(--primary);background:var(--primary);color:#fff}.primary-button:hover{filter:brightness(.96)}.danger-button{border-color:#fecaca;color:var(--danger);background:#fff7f7}.danger-button:hover{background:#fee2e2}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.main-stack,.side-stack{display:grid;gap:18px;min-width:0}.card{min-width:0;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 1px 2px rgb(15 23 42/3%)}.card-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px}.card-title h2{margin:0;font-size:16px}.card-title .hint{color:var(--muted);font-size:12px}.overview{display:flex;align-items:center;gap:20px}.ring{--rate:0;position:relative;width:132px;height:132px;flex:0 0 auto;border-radius:50%;background:conic-gradient(var(--primary) 0,var(--primary) calc(var(--rate) * 1%),#eef1f5 calc(var(--rate) * 1%),#eef1f5 100%);display:grid;place-items:center}.ring:after{content:"";position:absolute;inset:12px;background:#fff;border-radius:50%}.ring-inner{position:relative;z-index:1;text-align:center}.ring-value{font-size:28px;font-weight:800}.ring-label{color:var(--muted);font-size:12px}.overview-detail{display:grid;gap:10px}.overview-row{display:flex;justify-content:space-between;gap:24px;border-bottom:1px dashed var(--line);padding-bottom:8px;font-size:13px}.overview-row:last-child{border-bottom:0;padding-bottom:0}.overview-row span:first-child{color:var(--muted)}.overview-row strong{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat-box{border-radius:12px;padding:12px;background:#f7f9fc}.stat-box b{display:block;font-size:22px;margin-bottom:3px}.stat-box span{color:var(--muted);font-size:12px}.quick-form{display:grid;grid-template-columns:minmax(0,1fr) 86px 86px 36px;grid-template-areas:"name category unit color" "target target target button";gap:8px;margin-top:12px}.form-name{grid-area:name}.form-category{grid-area:category}.form-unit{grid-area:unit}.form-target{grid-area:target}.form-color{grid-area:color}.form-submit{grid-area:button;padding:8px 4px;font-size:12px}.habit-manager-list{display:grid;gap:6px;max-height:250px;overflow-y:auto;margin-bottom:14px}.habit-manager-item{display:flex;align-items:center;gap:6px;min-width:0;padding:6px;border:1px solid var(--line);border-radius:10px;background:#f7f9fc}.habit-manager-name{min-width:0;flex:1 1}.habit-manager-name strong{font-size:12px}.habit-manager-name small,.habit-manager-name strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.habit-manager-name small{color:var(--muted);font-size:10px}.manager-action{border:1px solid var(--line);border-radius:6px;padding:4px 6px;background:#fff;color:var(--text);font-size:10px;white-space:nowrap}.manager-action:hover{border-color:var(--primary);color:var(--primary)}.manager-action.danger{color:var(--danger);border-color:#fecaca}.manager-action.danger:hover{background:#fff2f2;border-color:var(--danger)}.manager-form-title{margin-bottom:8px;font-size:12px;font-weight:700}.manager-cancel{width:100%;margin-top:8px;padding:6px 10px;font-size:12px}.manager-add-button{border:1px solid var(--primary);border-radius:8px;padding:6px 9px;background:var(--primary);color:#fff;font-size:12px;white-space:nowrap}.manager-add-button:hover{filter:brightness(.96)}.habit-manager-details{border:1px solid var(--line);border-radius:10px;background:#f7f9fc}.habit-manager-details summary{display:flex;align-items:center;justify-content:space-between;padding:9px 10px;cursor:pointer;color:var(--text);font-size:12px;font-weight:600;list-style:none}.habit-manager-details summary::-webkit-details-marker{display:none}.detail-caret,.details-caret{color:var(--muted);font-size:12px}.habit-manager-details[open] .details-caret{transform:rotate(180deg)}.habit-manager-details[open] summary{border-bottom:1px solid var(--line)}.habit-manager-details .habit-manager-list{margin-bottom:0;padding:8px}.habit-modal-overlay{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:16px;background:rgb(15 23 42/45%)}.habit-modal{width:min(420px,100%);max-height:calc(100vh - 32px);overflow-y:auto;border-radius:16px;background:#fff;padding:18px;box-shadow:0 20px 50px rgb(15 23 42/18%)}.habit-modal .card-title h2{font-size:14px}.habit-modal .quick-form{gap:6px;margin-top:10px}.habit-modal .quick-form input,.habit-modal .quick-form select{padding:7px 8px;font-size:12px}.habit-modal .ghost-button,.habit-modal .primary-button{padding:7px 10px;font-size:12px}.habit-modal .hint{font-size:11px}.habit-modal-close{width:30px;height:30px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--muted);font-size:18px}.habit-modal-close:hover{color:var(--danger);border-color:#fecaca}.habit-modal-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:8px}.quick-form input,.quick-form select{min-width:0;border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:#fff;font-size:12px}.quick-form input:focus,.quick-form select:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}.color-input{padding:4px!important;cursor:pointer}.today-list{display:grid;gap:8px}.today-group{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;margin-top:4px}.today-group:first-child{margin-top:0}.today-item{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:11px;padding:9px 10px}.today-dot{width:10px;height:10px;flex:0 0 auto;border-radius:50%}.today-name{min-width:0;flex:1 1;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.today-target{color:var(--muted);font-size:11px}.check-button{width:28px;height:28px;border:1px solid var(--line);border-radius:8px;background:#fff;color:transparent;font-size:16px}.check-button.done{border-color:var(--green);background:var(--green);color:#fff}.quick-number{width:76px;border:1px solid var(--line);border-radius:8px;padding:5px 7px}input[type=time].quick-number{font-size:12px}.matrix-shell{width:100%;max-width:100%;min-width:0;overflow-x:auto;overscroll-behavior-x:contain;border:1px solid var(--line);border-radius:12px;background:#fff}.habits-grid{display:grid;grid-auto-rows:auto;width:100%;min-width:0}.habit-cell,.matrix-category,.matrix-cell,.matrix-corner,.matrix-day,.matrix-goal,.matrix-group,.matrix-week{border-right:1px solid #f0f1f3;border-bottom:1px solid #f0f1f3;display:flex;align-items:center;justify-content:center;min-width:0}.matrix-group{grid-column:1/-1;min-height:36px;color:#374151;font-size:13px;font-weight:700;letter-spacing:.08em}.matrix-corner,.matrix-group{justify-content:flex-start;padding-left:14px;background:#f7f9fc}.matrix-corner{position:sticky;left:0;z-index:4;color:var(--muted);font-size:12px;min-height:46px}.daily-habit-header{justify-content:center;padding-left:0}.matrix-label{display:flex;align-items:center;justify-content:center;min-width:0;color:var(--muted);font-size:12px}.matrix-category,.matrix-label{background:#f7f9fc;font-weight:700;letter-spacing:.08em}.matrix-category{position:sticky;left:0;z-index:4;color:#374151;font-size:13px}.matrix-goal{z-index:2;justify-content:center;padding:0 4px;background:#fff;font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.goal-header,.matrix-goal{position:sticky;left:174px}.goal-header{z-index:4}.matrix-week{background:#f7f9fc;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.1em;min-height:36px}.matrix-week:nth-child(2n){background:#eef4ff}.matrix-day{min-height:46px;background:#fff;color:var(--muted);font-size:11px;flex-direction:column;gap:1px}.matrix-day strong{color:var(--text);font-size:11px}.matrix-day span{font-size:9px}.matrix-day.today{background:var(--primary-soft)}.matrix-day.today strong{color:var(--primary)}.matrix-day.weekend{background:#fff3e8}.matrix-day.weekend span,.matrix-day.weekend strong{color:#c76a1c}.matrix-cell.weekend{background:#fffaf5}.habit-cell{position:sticky;left:72px;z-index:3;background:#fff;min-height:46px;justify-content:flex-start;gap:7px;padding:0 8px}.habit-dot{width:9px;height:9px;flex:0 0 auto;border-radius:50%}.habit-name{min-width:0;flex:1 1;font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.habit-delete{border:0;background:transparent;color:#c4c9d2;font-size:15px;padding:2px 4px}.habit-delete:hover{color:var(--danger)}.matrix-cell{padding:3px}.matrix-display{display:block;width:100%;text-align:center;font-size:clamp(8px,.55vw,10px);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:#374151;white-space:nowrap;letter-spacing:-.03em}.matrix-check{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;color:transparent;border:1px solid #d7dbe2;background:#fff;font-size:13px}.matrix-check.done{border-color:var(--green);background:var(--green);color:#fff}.matrix-checkbox{appearance:none;-webkit-appearance:none;width:18px;height:18px;border:1px solid #d7dbe2;border-radius:5px;background:#fff;cursor:pointer;display:grid;place-items:center}.matrix-checkbox:checked{border-color:var(--green);background:var(--green)}.matrix-checkbox:checked:after{content:"✓";color:#fff;font-size:12px;font-weight:700}.cell-button{width:30px;height:30px;border:1px solid #d7dbe2;border-radius:7px;background:#fff;color:transparent;font-size:16px;transition:transform .1s ease,background .15s ease}.cell-button:hover:not(:disabled){border-color:var(--primary);transform:translateY(-1px)}.cell-button.done{border-color:var(--green);background:var(--green);color:#fff}.cell-button.future{opacity:.45}.cell-number{appearance:textfield;-webkit-appearance:textfield;width:100%;height:34px;border:0;background:transparent;text-align:center;font-size:clamp(8px,.5vw,10px);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:#374151;padding:0;letter-spacing:-.03em}.cell-number::-webkit-inner-spin-button,.cell-number::-webkit-outer-spin-button{display:none;appearance:none;-webkit-appearance:none}.cell-time{appearance:none;-webkit-appearance:none;width:100%;min-width:0;height:34px;border:0;background:transparent;text-align:center;font-size:clamp(7px,.5vw,9px);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:#374151;padding:0;letter-spacing:-.03em;cursor:text}.cell-time::-webkit-calendar-picker-indicator,.cell-time::-webkit-clear-button,.cell-time::-webkit-inner-spin-button,.quick-number::-webkit-calendar-picker-indicator,.quick-number::-webkit-clear-button,.quick-number::-webkit-inner-spin-button{display:none;appearance:none;-webkit-appearance:none}.cell-number:focus,.cell-time:focus{outline:2px solid var(--primary-soft);background:#fff}.cell-number.done{color:var(--green);font-weight:700}.loading-overlay{opacity:.55;pointer-events:none}.empty-state{padding:46px 20px;text-align:center;color:var(--muted);font-size:14px}.login-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:var(--bg)}.login-card{width:min(360px,100%);border:1px solid var(--line);border-radius:16px;background:#fff;padding:28px;box-shadow:0 8px 32px rgb(15 23 42/8%)}.login-card h1{margin:0;font-size:24px}.login-card>p{margin:8px 0 0;color:var(--muted);font-size:13px}.login-form{display:grid;gap:12px;margin-top:22px}.login-form label{display:grid;gap:6px;color:var(--muted);font-size:12px}.login-form input{border:1px solid var(--line);border-radius:9px;padding:9px 10px;font-size:13px}.login-form input:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}.login-form .primary-button{width:100%;margin-top:4px}.login-form .primary-button:disabled{opacity:.6;cursor:not-allowed}.login-error{border-radius:8px;background:#fff2f2;border:1px solid #fecaca;color:var(--danger);padding:8px 10px;font-size:12px}.weekly-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.weekly-header h2{margin:0;font-size:22px}.weekly-header p{margin:5px 0 0;color:var(--muted);font-size:12px}.weekly-nav{display:flex;gap:8px;flex-wrap:wrap}.weekly-overview{display:grid;grid-template-columns:190px minmax(0,1fr) 180px;gap:18px;align-items:stretch}.weekly-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.weekly-main,.weekly-side{display:grid;gap:18px;min-width:0}.weekly-side{position:sticky;top:20px}.weekly-card-title{margin:0 0 12px;font-size:14px}.weekly-overview>.card{display:flex;flex-direction:column;min-height:280px}.month-calendar{display:grid;gap:6px;flex:1 1}.month-calendar-title{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:6px 8px;border-radius:8px;background:#f7f9fc;text-align:center;font-weight:700;font-size:13px}.month-calendar-body{display:grid;grid-template-columns:30px minmax(0,1fr);gap:6px;flex:1 1;min-height:0}.month-calendar-week-numbers{display:grid;grid-template-rows:16px repeat(6,22px);gap:2px}.month-calendar-week-number{display:flex;align-items:center;justify-content:center;border-radius:6px;background:#f7f9fc;color:var(--muted);font-size:9px}.month-calendar-week-number.is-current-week{color:#c76a1c;background:#fff3e8}.month-calendar-weeks{display:grid;grid-template-rows:16px repeat(6,22px);gap:2px}.month-calendar-nav{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:16px;line-height:1}.month-calendar-nav:hover{color:var(--primary)}.month-calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;grid-row:1;grid-column:1;color:var(--muted);font-size:9px;text-align:center}.month-calendar-grid{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(6,22px);gap:2px;grid-row:2/8;grid-column:1}.month-calendar-week-row{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;border-radius:6px;min-width:0}.month-calendar-week-row.is-current-week{background:#fff3e8;box-shadow:inset 0 0 0 1px #f7c892}.month-calendar-cell{min-width:0;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);cursor:pointer;font-size:10px;text-align:center}.month-calendar-cell:hover{border-color:var(--primary)}.month-calendar-cell.outside{color:#c4c9d2}.month-calendar-cell.week-selected{border-color:transparent;background:transparent}.month-calendar-cell.selected{background:var(--primary-soft)}.month-calendar-cell.selected,.month-calendar-cell.today{border-color:var(--primary);color:var(--primary);font-weight:700}.weekly-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.weekly-calendar-day{display:grid;gap:2px;border:1px solid var(--line);border-radius:8px;padding:7px 2px;background:#fff;color:var(--muted);font-size:10px;text-align:center}.weekly-calendar-day strong{color:var(--text);font-size:13px}.weekly-calendar-day.selected,.weekly-calendar-day:hover{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.weekly-calendar-day.today{box-shadow:inset 0 0 0 1px var(--primary)}.weekly-add-form{display:flex;gap:8px;margin-bottom:12px}.weekly-add-form input,.weekly-add-form select,.weekly-day-add input,.weekly-day-add select{min-width:0;border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-size:12px;background:#fff}.weekly-add-form input{flex:1 1}.weekly-add-form button,.weekly-day-add button{white-space:nowrap}.weekly-plan-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.weekly-plan-toolbar span{color:var(--muted);font-size:11px}.weekly-plan-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;align-items:start;max-height:260px;overflow-y:auto}.weekly-plan-item{display:flex;flex-direction:column;align-items:stretch;gap:6px;border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-size:12px;background:#f7f9fc}.weekly-plan-add-card{min-height:78px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--line);border-radius:8px;background:#fff;color:var(--primary);cursor:pointer;font-size:12px}.weekly-plan-add-card:hover{border-color:var(--primary);background:var(--primary-soft)}.weekly-plan-summary{display:flex;justify-content:flex-end;gap:12px;margin-top:10px;color:var(--muted);font-size:12px}.weekly-plan-item-actions{display:flex;gap:6px;margin-left:0}.weekly-plan-action{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:11px;padding:2px 3px}.weekly-plan-action:hover{color:var(--primary)}.weekly-plan-action.danger:hover{color:var(--danger)}.weekly-plan-item span{min-width:0;width:100%;flex:none;overflow:visible;white-space:normal;line-height:1.4}.weekly-plan-item small{color:var(--muted);white-space:normal;line-height:1.5;font-size:10px}.weekly-plan-item.done span{color:var(--muted);text-decoration:line-through}.weekly-status-number{font-size:36px;font-weight:800;color:var(--primary)}.weekly-status-chart{position:relative;flex:1 1;display:grid;place-items:center}.weekly-status-overlay{position:absolute;inset:0;display:grid;place-content:center;text-align:center;pointer-events:none}.weekly-status-overlay b{font-size:30px;color:var(--text)}.weekly-status-overlay span{color:var(--muted);font-size:11px}.weekly-status-detail{margin-top:4px;color:var(--muted);font-size:12px}.weekly-status-bar{height:8px;margin-top:14px;overflow:hidden;border-radius:999px;background:#eef1f5}.weekly-status-bar span{display:block;height:100%;border-radius:999px;background:var(--primary)}.weekly-days{display:flex;align-items:stretch;gap:10px;margin-top:18px;overflow-x:auto;padding-bottom:4px}.weekly-day-row{flex:1 1;min-width:140px;display:flex;flex-direction:column;gap:10px;border:1px solid var(--line);border-radius:16px;background:var(--card);padding:12px;box-shadow:0 1px 2px rgb(15 23 42/3%)}.weekly-day-row>.card{min-width:0;border:0;background:transparent;border-radius:0;padding:0;box-shadow:none}.weekly-day-row.today{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.weekly-day-title{display:grid;justify-items:center;gap:2px;margin-bottom:6px;padding:6px 4px;border-radius:10px;background:var(--primary-soft)}.weekly-day-title strong{color:var(--primary);font-size:14px}.weekly-day-title span{color:var(--muted);font-size:11px}.weekly-day-tasks{display:flex;flex-direction:column;flex:0 0 auto;height:auto;min-height:310px}.weekly-day-task-list,.weekly-day-tasks{gap:6px;max-height:none;overflow:visible}.weekly-day-task-list{display:grid;min-height:0}.weekly-task-item{display:grid;grid-template-columns:auto minmax(0,1fr) 44px auto;grid-template-rows:auto;gap:4px;align-items:center;height:40px;min-height:40px;border:1px solid var(--line);border-radius:8px;padding:6px 8px}.weekly-task-item>input[type=checkbox]{grid-column:1;grid-row:1}.weekly-task-title{min-width:0;grid-column:2;grid-row:1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.weekly-task-item.done .weekly-task-title{color:var(--muted);text-decoration:line-through}.weekly-task-time{width:100%;min-width:0;grid-column:3;grid-row:1;border:1px solid var(--line);border-radius:6px;padding:5px 4px;font-size:10px;text-align:center}.weekly-task-delete{grid-column:4;grid-row:1;border:0;background:transparent;color:#c4c9d2;font-size:15px}.weekly-task-delete:hover{color:var(--danger)}.weekly-day-add{position:relative;display:flex;flex-direction:column;gap:6px;margin-top:0}.weekly-day-add-trigger{width:100%;display:flex;align-items:center;justify-content:center;gap:4px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);cursor:pointer;font-size:11px;padding:6px 8px}.weekly-day-add-trigger:hover{border-color:var(--primary);background:var(--primary-soft)}.weekly-day-add-trigger:disabled{opacity:.5;cursor:not-allowed}.weekly-day-add-menu{position:absolute;left:0;right:0;top:calc(100% + 4px);bottom:auto;z-index:5;display:grid;gap:4px;max-height:160px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;padding:4px;background:#fff;box-shadow:0 6px 18px rgba(15,23,42,.12)}.weekly-day-add-option{width:100%;border:0;border-radius:6px;background:transparent;color:var(--text);cursor:pointer;font-size:10px;padding:5px 6px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.weekly-day-add-option:hover{background:var(--primary-soft);color:var(--primary)}.weekly-day-diary{flex:0 0 auto;margin-top:auto}.weekly-day-diary textarea{width:100%;height:calc(10 * 1.6em + 22px);min-height:calc(10 * 1.6em + 22px);resize:vertical;border:1px solid var(--line);border-radius:9px;padding:10px;font-size:12px;line-height:1.6;background:#fff}.weekly-day-diary textarea:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}.month-note-card textarea{width:100%;min-height:180px;resize:vertical;border:1px solid var(--line);border-radius:9px;padding:10px;font-family:inherit;font-size:12px;line-height:1.6;color:inherit;background:#fff}.month-note-card textarea:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}.weekly-review-card textarea{width:100%;min-height:180px;resize:vertical;border:1px solid var(--line);border-radius:9px;padding:10px;font-size:12px;line-height:1.6;background:#fff}.weekly-review-card textarea:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}.weekly-daily-habit-scroll{overflow-x:auto}.weekly-daily-habit-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.weekly-daily-habit-header .weekly-card-title{margin:0}.daily-habit-add-button{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--primary);cursor:pointer;font-size:16px}.daily-habit-add-button:hover{border-color:var(--primary);background:var(--primary-soft)}.daily-habit-form{display:grid;gap:6px;margin-bottom:10px}.daily-habit-form input{min-width:0;border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:11px;background:#fff}.daily-habit-form-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}.daily-habit-form-actions{display:flex;justify-content:flex-end;gap:6px}.daily-habit-form-actions button{padding:5px 10px;font-size:11px}.daily-habit-table{display:grid;grid-template-columns:58px 30px 38px repeat(7,15px) 26px;min-width:257px;border:1px solid var(--line);border-radius:8px;overflow:hidden}.daily-habit-cell,.daily-habit-head{display:flex;align-items:center;justify-content:center;min-width:0;padding:4px 1px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);font-size:9px}.daily-habit-head{background:#f7d8df;color:#4b5563;font-weight:700;text-align:center}.daily-habit-head.today{background:var(--primary);color:#fff}.daily-habit-cell.today{background:var(--primary-soft)}.daily-habit-cell.habit{display:flex;align-items:center;min-width:0;justify-content:flex-start;padding-left:4px;font-weight:600;white-space:nowrap}.daily-habit-name{min-width:0;overflow:hidden;text-overflow:ellipsis}.daily-habit-delete{flex:0 0 auto;margin-left:auto;border:0;background:transparent;color:#c4c9d2;cursor:pointer;font-size:13px;padding:0 2px}.daily-habit-delete:hover{color:var(--danger)}.daily-habit-cell.progress{color:var(--green);font-weight:700}.daily-habit-cell input[type=checkbox]{width:12px;height:12px;accent-color:var(--green)}.daily-habit-cell input[type=number]{appearance:textfield;-moz-appearance:textfield;width:100%;min-width:0;border:0;background:transparent;padding:2px 0;font-size:10px;text-align:center}.daily-habit-cell input[type=number]::-webkit-inner-spin-button,.daily-habit-cell input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.daily-habit-cell input[type=number]:focus{border-radius:4px;background:#f7f9fc;outline:1px solid var(--primary)}.daily-habit-summary{display:flex;justify-content:flex-end;margin-top:8px;color:var(--muted);font-size:11px}.duration-stat-list,.weekly-duration-card{display:grid;gap:12px}.duration-stat-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;font-size:12px}.duration-stat-header span{color:var(--muted)}.duration-stat-header strong{color:var(--text);white-space:nowrap;font-size:11px}.duration-stat-track{height:8px;overflow:hidden;border-radius:999px;background:#eef1f5}.duration-stat-fill{display:block;height:100%;border-radius:999px;background:var(--primary)}.duration-stat-fill.total{background:#94a3b8}.duration-stat-fill.force{background:var(--green)}.weekly-empty{color:var(--muted);font-size:12px}.schedule-modal-form{display:grid;gap:12px}.schedule-modal-form label{display:grid;gap:6px;color:var(--muted);font-size:12px}.schedule-modal-form input,.schedule-modal-form select{border:1px solid var(--line);border-radius:9px;padding:8px 10px;font-size:12px;background:#fff}.schedule-modal-form input:focus,.schedule-modal-form select:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}.schedule-modal-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width:1180px){.dashboard-grid{grid-template-columns:1fr}.side-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.weekly-layout,.weekly-overview{grid-template-columns:1fr}.weekly-side{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:720px){.page{padding:14px 10px 30px}.app-header{align-items:flex-start}.app-title h1{font-size:22px}.month-nav{width:100%;justify-content:space-between}.side-stack{grid-template-columns:1fr}.quick-form{grid-template-columns:minmax(0,1fr) 82px 82px 34px}.card{padding:14px}.overview{align-items:flex-start}.weekly-plan-list{grid-template-columns:minmax(0,1fr)}.weekly-days{display:flex;align-items:stretch;gap:10px;overflow-x:auto}.weekly-day-row{flex:1 1;min-width:140px;display:flex;flex-direction:column;gap:10px}.weekly-plan-item-actions{width:auto;justify-content:flex-start}.weekly-add-form{flex-direction:column}.weekly-side{grid-template-columns:1fr}}.gantt{--row-height:40px;--project-height:46px;--gantt-border:#e8edf4;color:#263449}.gantt.compact{--row-height:32px;--project-height:38px}.gantt button:disabled{cursor:default;opacity:.45}.gantt [role=separator]:focus-visible,.gantt button:focus-visible,.gantt summary:focus-visible{outline:2px solid #4f7cff;outline-offset:2px}.gantt-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:18px;margin:24px 0 18px}.gantt-heading h1{margin:0 0 7px;font-size:24px;letter-spacing:-.6px;font-weight:700}.gantt-heading p{margin:0;color:#778398;font-size:13px}.gantt-heading-actions,.gantt-nav-controls,.gantt-view-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.gantt-button,.gantt-icon-button,.gantt-text-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;background:transparent;color:#526177;border-radius:7px;white-space:nowrap}.gantt-button{min-height:32px;padding:5px 10px;font-size:12px;border-color:#e2e8f0;background:#fff}.gantt-icon-button{width:30px;height:30px;padding:0;flex:0 0 30px}.gantt-button:hover:not(:disabled),.gantt-icon-button:hover:not(:disabled){background:#eff4ff;border-color:#d4e1ff;color:#365ed7}.gantt-text-button{padding:5px 0;color:#3f67dd;font-size:12px}.gantt-text-button:hover{text-decoration:underline}.gantt-add-project{gap:6px;min-height:36px;box-shadow:0 3px 8px #4f7cff18}.gantt-add-project,.gantt-save-status{display:inline-flex;align-items:center}.gantt-save-status{gap:7px;font-size:12px;color:#7a8697;margin-right:6px}.gantt-save-status>span{width:6px;height:6px;border-radius:50%;background:#a6b4c6}.gantt-save-status.saved>span{background:#2aa67a}.gantt-save-status.error{color:#c34845}.gantt-save-status.error>span{background:#c34845}.gantt-save-status.saving>span{background:#4f7cff;animation:gantt-pulse 1s ease-in-out infinite alternate}@keyframes gantt-pulse{to{opacity:.25}}.gantt-overview{display:flex;align-items:center;flex-wrap:wrap;gap:18px;font-size:12px;color:#788499;margin:0 0 18px}.gantt-overview strong{font-size:15px;color:#344258;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:650}.gantt-overview>button{display:inline-flex;align-items:center;gap:6px;padding:2px 0;border:0;background:transparent;color:inherit;font-size:inherit}.gantt-overview>button:hover{color:#365ed7}.gantt-overview>button.has-overdue strong{color:#c76546}.gantt-overview-divider{width:1px;height:14px;background:#dce3ec}.gantt-status-dot{width:6px;height:6px;border-radius:50%;display:inline-block;background:#2aa67a}.gantt-status-dot.overdue{background:#dc9364}.gantt-card{border:1px solid #e0e6ef;border-radius:12px;background:#fff;box-shadow:0 3px 16px #25385804}.gantt-navigation,.gantt-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:13px 16px;border-bottom:1px solid var(--gantt-border)}.gantt-toolbar-spacer{flex:1 1}.gantt-search{display:flex;align-items:center;gap:8px;min-width:190px;max-width:280px;flex:1 1;background:#f6f8fb;border:1px solid #edf0f5;border-radius:7px;padding:7px 10px;color:#8c99ac}.gantt-search:focus-within{border-color:#a7bcff}.gantt-search input{border:0;outline:none;background:transparent;width:100%;min-width:0;font-size:12px;color:#334155}.gantt-search input::placeholder{color:#8c99ac}.gantt-filters,.gantt-scale{display:flex;align-items:center;gap:3px}.gantt-filters button,.gantt-scale button{min-height:30px;padding:5px 10px;border-radius:6px;border:1px solid transparent;color:#6b7a90;background:transparent;font-size:12px}.gantt-filters button:hover{background:#f3f6fa}.gantt-filters button.active{color:#4268d9;background:#edf2ff;font-weight:600}.gantt-scale{background:#f1f4f8;padding:2px;border-radius:7px}.gantt-scale button{min-width:35px;min-height:27px;padding:2px 10px}.gantt-scale button.active{background:#fff;color:#3f67dd;box-shadow:0 1px 4px #28384c12}.gantt-column-options{position:relative;font-size:12px}.gantt-column-options summary{list-style:none;cursor:pointer}.gantt-column-options summary::-webkit-details-marker{display:none}.gantt-column-options[open] summary{background:#eff4ff}.gantt-column-options>div{position:absolute;top:calc(100% + 7px);right:0;z-index:60;background:#fff;border:1px solid #e1e7ef;box-shadow:0 8px 30px #1e293b15;border-radius:9px;width:190px;padding:8px}.gantt-column-options label{display:flex;align-items:center;gap:10px;padding:9px 6px;cursor:pointer;color:#526177}.gantt-column-options input{accent-color:#4f7cff}.gantt-navigation{justify-content:space-between;padding-top:10px;padding-bottom:10px}.gantt-visible-range{display:inline-flex;align-items:center;gap:8px;padding:0 8px 0 0;color:#3c4b60;font-size:13px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.gantt-visible-range svg{color:#98a5b6}.gantt-scroll{overflow:auto;max-height:max(320px,calc(100vh - 285px));border-radius:0 0 10px 10px;scrollbar-width:thin;scrollbar-color:#c5cfdd #f6f8fb;overscroll-behavior:contain;position:relative}.gantt-scroll:focus-visible{outline:2px solid #b7c9ff;outline-offset:-2px}.gantt-scroll::-webkit-scrollbar{width:10px;height:10px}.gantt-scroll::-webkit-scrollbar-track{background:#f6f8fb}.gantt-scroll::-webkit-scrollbar-thumb{border:2px solid #f6f8fb;background:#c5cfdd;border-radius:8px}.gantt-canvas{width:calc(var(--meta-width) + var(--timeline-width))}.gantt-calendar-header,.gantt-row{display:flex;width:100%}.gantt-calendar-header{position:sticky;top:0;z-index:30;height:76px;background:#f8fafc;box-shadow:0 1px 0 #dfe6ef}.gantt-meta{position:sticky;left:0;z-index:10;width:var(--meta-width);flex:0 0 var(--meta-width);display:grid;background:#fff;box-shadow:2px 0 0 #e5ebf3}.gantt-calendar-header>.gantt-meta{z-index:35;background:#f8fafc}.gantt-name-header{position:relative;display:flex;align-items:center;padding-left:20px;font-size:12px;color:#75849a;font-weight:500}.gantt-column-resizer{position:absolute;top:0;right:-4px;bottom:0;width:9px;z-index:2;cursor:col-resize;touch-action:none}.gantt-column-resizer:hover:after{content:"";position:absolute;left:4px;top:8px;bottom:8px;width:2px;background:#90aaff}.gantt-cell{display:flex;align-items:center;justify-content:center;gap:3px;min-width:0;border-left:1px solid #f1f4f8;padding:0 5px;font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:#586880}.gantt-calendar-header .gantt-cell{font-size:11px;color:#8390a3;font-weight:500}.gantt-calendar{width:var(--timeline-width);flex:0 0 var(--timeline-width);-webkit-user-select:none;user-select:none;touch-action:pan-y;cursor:grab}.gantt-calendar:active{cursor:grabbing}.gantt-days,.gantt-months,.gantt-weeks{display:flex}.gantt-months>div{flex-shrink:0;height:28px;display:flex;align-items:center;padding-left:12px;background:#f1f4f9;border-right:1px solid #dde5f0;border-bottom:1px solid #e4eaf3;font-size:11px;color:#73829a;overflow:hidden;white-space:nowrap}.gantt-months>div.current{color:#4c70d3;background:#eaf0ff;font-weight:600}.gantt-days>div{flex-shrink:0;height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:11px;color:#5b6d86;border-right:1px solid #edf1f7}.gantt-days small{font-size:10px;color:#9ca8b8}.gantt-days>.weekend{background:#f2f6f7;color:#7d9993}.gantt-days>.weekend small{color:#93ada4}.gantt-days>.today{background:#edf2ff}.gantt-days>.today>span{width:22px;height:22px;border-radius:6px;background:#4f7cff;color:#fff;display:grid;place-items:center}.gantt-days>.today small{color:#4f7cff}.gantt-weeks>div{flex-shrink:0;height:48px;display:flex;justify-content:center;flex-direction:column;align-items:center;gap:3px;color:#637790;font-size:11px;border-right:1px solid #e2e8f1;overflow:hidden;white-space:nowrap}.gantt-weeks small{font-size:10px;color:#9aa6b6}.gantt-row{height:var(--row-height);border-bottom:1px solid #edf1f6}.gantt-row>.gantt-meta{height:100%}.gantt-row.selected .gantt-meta,.gantt-row:focus-within .gantt-meta,.gantt-row:hover .gantt-meta{background:#f1f6ff}.gantt-row.selected .gantt-track,.gantt-row:hover .gantt-track{background-color:#f8faff}.gantt-row.project-row{height:var(--project-height)}.gantt-row.project-row .gantt-meta{background:#f6f8fc}.gantt-row.project-row .gantt-track{background-color:#f8fafd}.gantt-project-group+.gantt-project-group{border-top:7px solid #f5f7fa}.gantt-name-cell{min-width:0;display:flex;align-items:center;gap:6px;padding:0 8px}.gantt-disclosure{width:24px;flex-basis:24px;height:28px}.gantt-disclosure svg{width:13px;height:13px}.gantt-tree-spacer{width:24px;flex:0 0 24px;font-size:13px;color:#aebdce;text-align:right}.gantt-dot{flex:0 0 7px;width:7px;height:7px;border-radius:3px}.gantt-name{min-width:0;flex:1 1;text-align:left;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;padding:4px 0;border:0;background:transparent;color:#3c4b60;font-size:13px}.gantt-name:hover{color:#3b66d7}.project-row .gantt-name{color:#273952;font-weight:650}.project-row .gantt-dot{border-radius:50%;width:9px;height:9px;flex-basis:9px}.gantt-project-count{font-size:10px;color:#91a0b3;padding-right:2px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.gantt-more{font-size:20px;letter-spacing:1px;color:#a1aebe}.gantt-row .gantt-more{width:25px;flex-basis:25px;height:26px}.child-row .gantt-name-cell{padding-left:28px}.child-row .gantt-dot{width:5px;height:5px;flex-basis:5px;border-radius:50%}.context-row .gantt-name{color:#8d9aad}.gantt-task-status{display:inline-flex;align-items:center;font-size:10px;white-space:nowrap}.gantt-task-status.overdue{color:#bd714b;padding:2px 5px;border-radius:4px;background:#fff2e9}.gantt-task-status.completed{color:#4aa685}.gantt-task-status svg{width:13px;height:13px}.gantt-cell-input{width:100%;min-width:0;border:1px solid transparent;border-radius:5px;padding:3px 2px;height:28px;background:transparent;font-size:12px;color:#586880;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.gantt-cell-input:hover:not(:disabled){border-color:#d7e1f0;background:#fff}.gantt-cell-input:focus{outline:2px solid #dce7ff;border-color:#90abf8;background:#fff}.gantt-cell-input::-webkit-calendar-picker-indicator{opacity:.3;width:12px;padding:0;margin:0}.gantt-cell-input:focus::-webkit-calendar-picker-indicator,.gantt-cell-input:hover::-webkit-calendar-picker-indicator{opacity:.7}.gantt-number{text-align:center;appearance:textfield;-moz-appearance:textfield}.gantt-number::-webkit-inner-spin-button,.gantt-number::-webkit-outer-spin-button{appearance:none;margin:0}.gantt-progress-cell .gantt-number{width:40px}.gantt-progress-cell>span{color:#9aa7b8;font-size:11px}.gantt-project-progress{gap:5px;font-size:11px}.gantt-mini-progress{width:24px;height:4px;background:#e5ebf2;overflow:hidden;border-radius:2px}.gantt-mini-progress>span{display:block;height:100%;border-radius:inherit}.gantt-track{position:relative;flex:0 0 var(--timeline-width);width:var(--timeline-width);height:100%;background-color:#fff;background-image:linear-gradient(90deg,#f1f4f8 1px,transparent 0);background-size:var(--day-width) 100%}.gantt-track-background{position:absolute;inset:0;pointer-events:none;overflow:hidden}.gantt-week-divider,.gantt-weekend{position:absolute;top:0;bottom:0}.gantt-weekend{background:#64748b04}.gantt-week-divider{background:#e2e9f3}.gantt-today-line{position:absolute;top:0;bottom:0;width:1px;background:#7696ee;opacity:.65;z-index:1}.gantt-bar{position:absolute;z-index:2;top:calc((var(--row-height) - 26px) / 2);height:26px;display:flex;align-items:center;padding:0 10px;border:1px solid #00000006;border-radius:5px;background:var(--accent);color:var(--bar-text,#fff);overflow:hidden;touch-action:none;-webkit-user-select:none;user-select:none;text-align:left;box-shadow:0 1px 2px #1f29370a}.gantt-bar.is-task{cursor:grab}.gantt-bar.is-dragging{cursor:grabbing;z-index:5;box-shadow:0 3px 10px #1e293b20}.gantt-bar.is-selected{outline:2px solid #4f7cff80;outline-offset:2px}.gantt-bar.is-project{top:calc((var(--project-height) - 18px) / 2);height:18px;border-radius:3px;border:1px solid color-mix(in srgb,var(--accent) 40%,white);border-left:3px solid var(--accent);border-right:3px solid var(--accent);background:color-mix(in srgb,var(--accent) 10%,white);color:#56677f;box-shadow:none;cursor:default}.gantt-bar.is-complete{filter:saturate(.55)}.gantt-bar:disabled{opacity:1}.gantt-bar-progress{position:absolute;inset:0 auto 0 0;background:#00000015;pointer-events:none;border-right:1px solid #ffffff30}.gantt-bar-text{position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.5;z-index:1;pointer-events:none}.gantt-bar.is-project .gantt-bar-text{font-size:10px}.gantt-bar.clipped-start{border-top-left-radius:0;border-bottom-left-radius:0}.gantt-bar.clipped-end{border-top-right-radius:0;border-bottom-right-radius:0}.gantt-grip{position:absolute;top:0;bottom:0;width:10px;z-index:3;cursor:ew-resize;touch-action:none}.gantt-grip.start{left:0}.gantt-grip.end{right:0}.gantt-grip:after{content:"";position:absolute;left:4px;top:6px;bottom:6px;width:2px;background:currentColor;opacity:.5;border-radius:1px}.gantt-grip:hover{background:#ffffff30}.gantt-outside{position:sticky;left:calc(var(--meta-width) + 12px);display:inline-flex;align-items:center;gap:4px;margin:8px 12px;padding:3px 7px;border-radius:5px;background:#f5f7fa;color:#8c9cb1;border:1px solid #e9eef5;font-size:10px;line-height:16px;z-index:3}.gantt-outside svg{width:12px;height:12px}.gantt-outside>span{color:#6082d3;margin-left:5px}.gantt-outside:hover{color:#4f70b6;background:#eef3ff;border-color:#cbd9fb}.gantt-project-empty{position:sticky;left:0;display:flex;gap:14px;align-items:center;height:44px;width:var(--meta-width);padding-left:45px;font-size:12px;color:#9ca8b8}.gantt-empty,.gantt-empty-results{padding:44px 16px;text-align:center;color:#91a0b3;font-size:13px}.gantt-empty>svg{width:32px;height:32px;color:#8fa7e7}.gantt-empty h2{color:#53657f;font-size:17px;font-weight:600}.gantt-empty-results{padding:22px 16px}.gantt-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:11px 16px;font-size:11px;color:#98a5b7;border-top:1px solid #eef2f7}.gantt-footer>span:first-child{display:flex;align-items:center;gap:6px}.gantt-today-key{width:2px;height:10px;background:#7594ed;display:inline-block}.gantt-weekend-key{width:10px;height:10px;border:1px solid #e3e9f0;background:#f4f7fa;display:inline-block;margin-left:10px}.gantt-notice{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:11px 14px;border:1px solid #f5dfbe;background:#fffbf3;border-radius:9px;margin:0 0 12px;font-size:12px;color:#99703d}.gantt-notice>span{flex:1 1}.gantt-notice.error{border-color:#f6d8d2;background:#fff7f5;color:#b05d4d}.gantt-notice>button:not(.gantt-icon-button){border:1px solid;background:transparent;border-radius:5px;padding:4px 8px;color:inherit}.gantt-menu{position:fixed;z-index:70;width:184px;padding:6px;border:1px solid #e1e7ef;border-radius:10px;background:#fff;box-shadow:0 10px 30px #1e293b18}.gantt-menu>button{display:block;width:100%;border:0;background:transparent;padding:10px;text-align:left;border-radius:6px;color:#596a82;font-size:12px}.gantt-menu>button:focus,.gantt-menu>button:hover{background:#f0f5ff;outline:none}.gantt-menu>button.danger{color:#c85f57;border-top:1px solid #f1f4f8;margin-top:4px}.gantt-menu>button.danger:hover{background:#fff1ef}.gantt-drag-tooltip{position:fixed;transform:translateX(-50%);z-index:100;pointer-events:none;display:flex;flex-direction:column;gap:6px;padding:10px 14px;border-radius:9px;box-shadow:0 4px 18px #1e293b24;background:#28364d;color:#fff;font-size:12px;white-space:nowrap}.gantt-drag-tooltip span{color:#bdcde3;font-size:11px}.gantt-form-hint{margin:0;font-size:12px;color:#7f8fa5;line-height:1.65}.gantt.compact .gantt-cell-input{height:25px}.gantt.compact .gantt-bar.is-task{height:22px;top:calc((var(--row-height) - 22px) / 2)}.gantt.compact .gantt-outside{margin-top:4px;margin-bottom:4px}@media (max-width:960px){.gantt-heading{align-items:flex-start}.gantt-heading-actions{gap:6px}.gantt-toolbar{gap:9px;padding:12px}.gantt-toolbar-spacer{display:none}.gantt-search{max-width:none}.gantt-navigation{padding:10px 12px}.gantt-scroll{max-height:65vh}}@media (max-width:600px){.gantt-heading h1{font-size:22px}.gantt-heading-actions{width:100%}.gantt-save-status{margin-right:auto}.gantt-overview{gap:12px}.gantt-search{flex-basis:100%}.gantt-nav-controls{gap:4px}.gantt-visible-range{font-size:12px;padding:0}.gantt-footer{line-height:1.7}}@media (prefers-reduced-motion:reduce){.gantt-save-status.saving>span{animation:none}}.project-gantt-modal{width:min(520px,100%)}.project-gantt-form{display:grid;gap:14px;margin-top:16px}.project-gantt-form label{display:grid;gap:6px;color:var(--muted);font-size:12px}.project-gantt-form input,.project-gantt-form select{width:100%;min-width:0;border:1px solid var(--line);border-radius:9px;padding:9px 10px;background:#fff;color:var(--text);font-size:13px}.project-gantt-form input:focus,.project-gantt-form select:focus{outline:2px solid var(--primary-soft);border-color:var(--primary)}.project-gantt-parent-note{color:var(--muted);font-size:10px}.project-gantt-form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.project-gantt-color{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px}.project-gantt-color>input[type=color]{width:44px;height:32px;padding:2px}.project-gantt-swatches{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.project-gantt-swatch{width:22px;height:22px;padding:0;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 1px var(--line)}.project-gantt-swatch.active,.project-gantt-swatch:hover{box-shadow:0 0 0 2px var(--primary)}.project-gantt-form-error{margin:-4px 0 0;color:var(--danger);font-size:12px}.project-gantt-form-actions{display:flex;justify-content:flex-end;gap:8px}@media (max-width:720px){.project-gantt-form-row{grid-template-columns:1fr}}.project-gantt-form>fieldset{border:0;padding:0;margin:0;min-width:0;display:grid;gap:14px}