*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f6f5f1;--bg-soft: #f6f5f1;--card: #ffffff;--card-2: #ffffff;--line: #eceae2;--text: #1f1e1b;--text-dim: #5f5e5a;--text-secondary: #5f5e5a;--text-tertiary: #888780;--brand: #26215c;--mint: #97c459;--warn: #fac775;--danger: #f7c1c1;--radius: 12px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}a{color:inherit;text-decoration:none}#root{min-height:100vh}.app-shell{min-height:100vh;padding:16px}.top-nav{display:flex;align-items:center;gap:12px;padding:10px 14px;border-radius:14px;border:1px solid var(--line);background:#fff}.top-switcher{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.brand{font-weight:500;font-size:1.05rem;color:var(--brand)}.switch-item{border-radius:999px;padding:6px 10px;color:var(--text-secondary, var(--text-dim));font-size:.9rem}.switch-item.active,.switch-item:hover{color:#3c3489;background:#eeedfe}.top-search{flex:1;min-width:180px}.search-wrap{display:flex;align-items:center;width:100%}.search-wrap input{width:100%;border-radius:10px;border:1px solid var(--line);background:var(--bg-soft);color:var(--text);padding:8px 11px}.top-menu{margin-left:auto;display:inline-flex;align-items:center;gap:8px}.menu-btn,.menu-dropdown summary,.menu-dropdown-list button,.dropdown-link{border:1px solid var(--line);border-radius:10px;background:var(--bg-soft);color:var(--text-dim);cursor:pointer;padding:7px 10px;font-size:.9rem}.dropdown-link{display:block;width:100%;text-align:left;border:none;background:transparent}.menu-dropdown{position:relative}.menu-dropdown summary{list-style:none}.menu-dropdown summary::-webkit-details-marker{display:none}.menu-dropdown-list{position:absolute;right:0;top:calc(100% + 6px);border:1px solid var(--line);border-radius:10px;padding:8px;background:#fff;display:grid;gap:6px;min-width:160px;z-index:15}.menu-dropdown-list button{width:100%;text-align:left}.nav-link{color:var(--text-dim);font-size:.95rem}.nav-link:hover{color:var(--text)}.planner-subnav{display:none}.app-main{margin-top:14px}.planner-page{display:grid;gap:12px}.project-list{padding:14px;display:grid;gap:10px}.project-list-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.project-list-head p{color:var(--text-dim);margin-top:4px}.project-list-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.project-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;text-align:left;color:var(--text);display:grid;gap:6px;cursor:pointer}.project-card.active{border-color:#cecbf6;box-shadow:inset 0 0 0 1px #534ab738}.project-card-top{display:flex;justify-content:space-between;gap:10px;align-items:center}.project-card p{color:var(--text-dim);font-size:.86rem}.new-project-btn{border:1px solid transparent;border-radius:10px;background:#534ab7;color:#fff;cursor:pointer;padding:8px 12px;white-space:nowrap}.card{border-radius:var(--radius);border:1px solid var(--line);background:#fff}.project-header-merged{padding:10px 16px;border:none;background:#fff;border-radius:12px;margin-bottom:2px}.project-header-merged h1{font-size:clamp(1.5rem,2.5vw,2.2rem);margin-bottom:6px;color:var(--text)}.project-header-merged p{color:var(--text-dim)}.header-top-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.header-left{flex:1}.header-subtitle{font-size:.95rem;margin-top:8px!important}.header-right{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.icon-btn{border:none;background:transparent;color:var(--text-dim);cursor:pointer;padding:4px;display:inline-flex;align-items:center;border-radius:6px}.icon-btn:hover{color:var(--text);background:var(--bg-soft)}.view-toggle-btn{border:1px solid var(--line);border-radius:10px;background:var(--bg-soft);color:var(--text-dim);cursor:pointer;padding:7px 14px;font-size:.9rem}.view-toggle-btn.toggled{border-color:transparent;background:#eeedfe;color:#3c3489}.view-group button,.header-actions button,.backlog-create-row button,.backlog-list button,.timeline-task-list button,.timeline-head-actions button{border:1px solid var(--line);border-radius:10px;background:var(--bg-soft);color:var(--text-dim);cursor:pointer;padding:8px 10px}.view-group button.active{border-color:transparent;background:#eeedfe;color:#3c3489}.view-layout-row,.view-header-box,.view-switch-box{display:none}.view-group,.header-actions{display:inline-flex;gap:8px;flex-wrap:wrap}.kpi-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.kpi-card{padding:14px;display:grid;gap:4px}.kpi-label{color:var(--text-dim);font-size:.9rem}.kpi-value{font-size:2rem;line-height:1}.tone-good{color:var(--mint)}.tone-info{color:#534ab7}.tone-warn{color:var(--warn)}.tone-danger{color:#a32d2d}.planner-grid{display:grid;grid-template-columns:1.05fr 2.2fr 1.4fr;gap:12px;align-items:start}.planner-grid.timeline-fullwidth{grid-template-columns:1fr}.planner-grid.timeline-fullwidth .hierarchy-panel{display:none}.planner-grid.timeline-fullwidth .workspace-column{grid-column:1 / -1}.hierarchy-panel{padding:16px}.hierarchy-panel h2,.workspace-panel h2,.rollup-panel h2,.session-panel h2{font-size:1.1rem;margin-bottom:8px}.parent-line{color:var(--text-dim);margin-bottom:8px}.hierarchy-panel ul{list-style:none;display:grid;gap:12px;margin-bottom:12px}.node-link{background:transparent;border:0;color:#185fa5;cursor:pointer;font-size:1.1rem;text-align:left}.node-meta{color:var(--text-dim);font-size:.9rem;margin-top:2px}.risk{display:inline-flex;margin-top:5px;font-size:.72rem;border-radius:999px;padding:3px 9px;border:none}.risk-low{color:#173404;background:#c0dd97}.risk-warning{color:#412402;background:#fac775}.risk-high{color:#501313;background:#f7c1c1}.dependency-rules{margin-top:8px;padding-top:10px;border-top:1px solid var(--line);display:grid;gap:5px}.dependency-rules h3{margin-bottom:3px}.dependency-rules p{color:var(--text-dim)}.workspace-column{display:grid;gap:12px}.backlog-panel,.timeline-panel{padding:16px}.timeline-panel{background:#fff!important}.backlog-head,.timeline-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}.timeline-head h2{background:transparent;color:#1f1e1b;padding:6px 12px;border-radius:8px;border:none;outline:none}.timeline-head-actions{display:inline-flex;align-items:center;gap:8px}.zoom-group{display:inline-flex;align-items:center;gap:2px;background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;padding:2px}.zoom-group button{border:none;border-radius:6px;background:transparent;color:var(--text-dim);padding:5px 7px;font-size:.8rem;display:flex;align-items:center;justify-content:center}.zoom-group button.active{border-color:transparent;background:#eeedfe;color:#3c3489}.backlog-head span,.timeline-head span{color:var(--text-dim);font-size:.9rem}.backlog-create-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin-bottom:10px}.backlog-create-row input,.timeline-task-list input{border:1px solid var(--line);border-radius:8px;background:var(--bg-soft);color:var(--text);padding:8px}.backlog-list,.timeline-task-list{list-style:none;display:grid;gap:10px}.gantt-shell{border:1px solid #d0d8e8;border-radius:12px;background:#fff;margin-bottom:10px;overflow:hidden}.gantt-scroll{overflow:auto}.gantt-board{display:grid;gap:0;position:relative}.gantt-header-row,.gantt-row{display:grid;grid-template-columns:300px auto}.gantt-header-row{border-bottom:1px solid #c8d4e8;position:sticky;top:0;z-index:3}.gantt-left-head{background:#fff;color:#3a5080;font-size:.8rem;font-weight:700;padding:9px 10px;border-right:1px solid #c8d4e8;text-transform:uppercase;letter-spacing:.04em}.gantt-axis-head{position:relative;height:56px;background:#fff;overflow:hidden}.gantt-tier-row{position:absolute;left:0;right:0;height:28px}.gantt-tier-row.tier-upper{top:0;border-bottom:1px solid #d7e0ef;background:#f8fbff}.gantt-tier-row.tier-lower{top:28px;background:#fff}.gantt-tier-segment{position:absolute;top:0;bottom:0;border-left:1px solid #c0cce0;border-right:1px solid rgba(192,204,224,.35);display:flex;align-items:center;padding-left:5px;overflow:hidden}.gantt-tier-segment span{font-size:.72rem;color:#4a6080;white-space:nowrap}.gantt-row{border-bottom:1px solid #e4eaf4}.gantt-row:nth-child(2n) .gantt-left-cell,.gantt-row:nth-child(2n) .gantt-track{background:#f4f7fc}.gantt-left-cell{padding:8px 10px;border-right:1px solid #c8d4e8;background:#fff}.gantt-left-clickable{cursor:pointer;transition:background .15s}.gantt-left-clickable:hover{background:#e4ecf8}.gantt-task-line{display:flex;align-items:center;gap:8px}.gantt-task-line strong{font-size:.86rem;max-width:230px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#1a2a4a}.gantt-task-title{cursor:grab;-webkit-user-select:none;user-select:none}.gantt-task-title:active{cursor:grabbing}.gantt-track{position:relative;min-height:38px;background:#fff}.gantt-grid-line{position:absolute;top:0;bottom:0;width:1px;border-left:1px solid rgba(180,200,230,.7)}.gantt-dependency-layer{position:absolute;top:0;pointer-events:none;z-index:3}.gantt-dependency-path{fill:none;stroke:#4f7fd8;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;opacity:.95}.gantt-bar{position:absolute;top:8px;height:22px;border-radius:4px;background:#1a4fa8;border:1px solid rgba(255,255,255,.1);display:inline-flex;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap;-webkit-user-select:none;user-select:none}.gantt-bar-fill{position:absolute;left:0;top:0;bottom:0;background:#2ea84b;border-radius:3px 0 0 3px;pointer-events:none}.gantt-bar-pct{position:absolute;left:50%;transform:translate(-50%);padding:0 4px;color:#e8f3ff;font-size:.7rem;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.6);z-index:1;pointer-events:none}.gantt-milestone{position:absolute;top:7px;display:flex;align-items:center;gap:5px;cursor:pointer;-webkit-user-select:none;user-select:none}.milestone-diamond{font-size:1rem;color:#d08000;filter:drop-shadow(0 0 3px rgba(200,128,0,.3))}.milestone-date{font-size:.73rem;color:#960;font-weight:600;white-space:nowrap}.gantt-empty{padding:12px;color:#6a80a0;font-size:.9rem}.backlog-list li,.timeline-task-list li{border:1px solid var(--line);border-radius:10px;background:#fff;padding:10px;display:grid;gap:8px}.backlog-list li{grid-template-columns:1fr;align-items:start;padding:8px 10px;cursor:pointer;transition:background .15s}.backlog-list li:hover{background:#f6f5f1}.planned-task-row{display:flex;justify-content:space-between;align-items:center;gap:8px}.planned-task-row strong{font-size:.88rem;color:var(--text-main)}.planned-task-meta{font-size:.76rem;color:var(--text-dim);white-space:nowrap}.planned-dur-input{width:64px!important;text-align:center}.planned-dep-select{flex:1;min-width:0}.empty-row{color:var(--text-dim)}.task-main-row{display:flex;justify-content:space-between;gap:10px;align-items:center}.task-main-row strong{display:inline-flex;align-items:center;gap:8px}.task-color{width:10px;height:10px;border-radius:999px}.task-meta-row{display:flex;flex-wrap:wrap;gap:8px;align-items:end}.task-meta-row label{display:grid;gap:4px;color:var(--text-dim);font-size:.82rem}.task-meta-row input{width:130px}.priority{display:inline-flex;border-radius:999px;padding:3px 8px;font-size:.75rem;border:1px solid}.priority-low{color:#fff;background:#2ea84b;border-color:transparent}.priority-medium{color:#fff;background:#f28a1a;border-color:transparent}.priority-high{color:#fff;background:#d94343;border-color:transparent}.dep-badge{width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-weight:700}.dep-ok{width:auto;border-radius:999px;padding:4px 10px;border:1px solid rgba(99,165,255,.6);color:#9dc8ff}.dep-unknown{border:1px solid rgba(242,195,75,.75);color:var(--warn);background:#f2c34b24}.progress-chip{border:1px solid #4b5790;border-radius:999px;padding:3px 8px;font-size:.75rem;color:#9dc8ff}.dependency-line-wrap{display:flex;align-items:center;gap:8px;color:#9dc8ff;font-size:.82rem}.dependency-line{width:120px;height:20px;flex:0 0 auto}.workspace-panel,.rollup-panel{padding:16px}.loop-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.loop-card{border-radius:14px;border:none;background:#f6f5f1;padding:12px;display:grid;gap:5px}.loop-grid .loop-card:nth-child(1){background:#b5d4f4}.loop-grid .loop-card:nth-child(2){background:#fac775}.loop-grid .loop-card:nth-child(3){background:#f7c1c1}.loop-card h3{font-size:1.06rem}.phase{display:inline-flex;width:fit-content;border-radius:999px;padding:4px 10px;font-size:.78rem;font-weight:700}.phase-plan{background:#4bb1ff33;color:#66b4ff}.phase-do{background:#f2c34b38;color:#f2c34b}.phase-check{background:#31d0b038;color:#31d0b0}.phase-act{background:#f7687a38;color:#f7687a}.phase{background:#fff}.phase-plan{color:#0c447c}.phase-do{color:#854f0b}.phase-check{color:#185fa5}.phase-act{color:#a32d2d}.loop-card p{color:#5f5e5a;font-size:.88rem}.loop-card button,.expand-btn,.chat-form button,.task-actions button{border:1px solid transparent;border-radius:10px;background:#eeedfe;color:#3c3489;cursor:pointer;padding:8px 10px}.loop-card button{margin-top:6px}.rollup-panel ul{display:grid;gap:8px;color:var(--text-dim);padding-left:16px}.session-panel{display:flex;flex-direction:column;gap:10px;padding:14px;background:#e7e4d8;border:none}.session-header-row{display:flex;justify-content:space-between;gap:8px}.session-head-main{width:100%}.session-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.session-select{border:1px solid var(--line);border-radius:8px;background:#f6f5f1;color:var(--text-secondary);padding:7px 8px;max-width:320px}.chat-ai-name{margin:0;font-size:1.05rem;line-height:1}.session-summary-line{color:var(--text-dim);font-size:.9rem;display:flex;flex-wrap:nowrap;align-items:center;gap:4px;margin:0;white-space:nowrap}.session-name-dim{color:var(--text-dim)}.session-edit-btn{border:none;background:transparent;color:var(--text-dim);cursor:pointer;padding:2px 4px;line-height:1;display:inline-flex;align-items:center}.session-edit-btn:hover{color:var(--text)}.modal-close-btn{border:none;background:transparent;color:var(--text-dim);cursor:pointer;font-size:1.2rem;line-height:1;padding:2px 6px;border-radius:6px}.modal-close-btn:hover{color:var(--text);background:#f6f5f1}.btn-danger-ghost{border:1px solid rgba(247,104,122,.45);border-radius:10px;background:transparent;color:var(--danger);cursor:pointer;padding:8px 14px;font-size:.9rem}.btn-danger-ghost:hover{background:#f7687a1f}.btn-save{border:none;border-radius:10px;background:#534ab7;color:#fff;cursor:pointer;padding:8px 22px;font-size:.95rem;font-weight:600;box-shadow:0 2px 12px #6f62ff59}.btn-save:hover{opacity:.9}.btn-convert{border:1px solid #63a5ff;border-radius:10px;background:transparent;color:#63a5ff;cursor:pointer;padding:8px 16px;font-size:.9rem;font-weight:600}.btn-convert:hover{background:#63a5ff1f}.modal-actions-right{display:flex;gap:8px;align-items:center}.checkbox-label{display:flex!important;flex-direction:row!important;align-items:center;gap:8px;cursor:pointer;font-size:.9rem}.checkbox-label input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:#7f67ff}.task-dependent-info{display:flex;gap:6px;align-items:flex-start;font-size:.82rem;color:var(--text-dim);padding:4px 0;grid-column:1 / -1}.dep-info-label{font-weight:600;color:var(--text-main);white-space:nowrap}.task-color-palette{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-top:2px}.task-color-family{display:grid;grid-template-rows:repeat(3,1fr);gap:6px}.task-color-swatch{width:100%;aspect-ratio:1.8 / 1;border-radius:7px;border:1px solid rgba(0,0,0,.1);cursor:pointer}.task-color-swatch.selected{outline:2px solid #26215c;outline-offset:1px;box-shadow:0 0 0 2px #cecbf6a6}.session-controls{margin-top:8px;display:flex;gap:6px;flex-wrap:wrap}.session-controls select,.session-controls button{border:1px solid var(--line);border-radius:8px;background:#f6f5f1;color:var(--text-secondary);padding:7px 8px}.message-list{display:grid;gap:8px;align-content:start;max-height:280px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff}.date-separator{font-size:.78rem;color:var(--text-dim);text-align:center;padding:4px 0}.bubble{display:grid;gap:8px;align-items:start}.bubble-time{color:#888780;font-size:.78rem;padding-top:3px}.bubble-time-right{text-align:right}.bubble-body{border-radius:12px;padding:8px 10px}.bubble p{font-size:.92rem;line-height:1.35;white-space:pre-wrap}.bubble-user{margin-left:10vw;grid-template-columns:56px minmax(0,1fr)}.bubble-user .bubble-body{background:#eeedfe;border:none}.bubble-planner{margin-left:0;grid-template-columns:minmax(0,1fr) 56px}.bubble-planner .bubble-body{background:transparent;border:none;padding:4px 0}.task-draft{border-radius:12px;border:1px solid var(--line);background:#fff;padding:10px;display:grid;gap:8px}.task-draft h3{font-size:.98rem}.task-draft label{display:grid;gap:4px;font-size:.84rem;color:var(--text-dim)}.task-draft input,.task-draft select,.task-draft textarea,.chat-form input{border:1px solid var(--line);border-radius:8px;background:#f6f5f1;color:var(--text);padding:8px 9px}.chat-form input{background:#f6f5f1;color:var(--text);border-color:var(--line)}.chat-form input::placeholder{color:#5b6382}.task-draft textarea{min-height:70px;resize:vertical}.task-actions{display:flex;gap:8px}.task-actions .ghost{background:transparent;border-color:#4b5790}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#050811a8;display:grid;place-items:center;z-index:80;padding:10px}.modal-card{width:min(760px,100%);border-radius:14px;border:1px solid var(--line);background:#fff;padding:14px;display:grid;gap:12px}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.modal-grid label{display:grid;gap:4px;font-size:.86rem;color:var(--text-dim)}.modal-grid input,.modal-grid select{border:1px solid var(--line);border-radius:8px;background:#f6f5f1;color:var(--text);padding:8px}.task-dialog input[type=color]{height:38px;padding:2px}.check-row{grid-column:span 2;display:flex;align-items:center;gap:8px}.modal-actions{display:flex;justify-content:flex-end}.modal-actions-split{justify-content:space-between}.quick-actions{display:flex;gap:6px;flex-wrap:wrap}.quick-actions button{background:transparent;border-color:var(--line)}.chat-form{display:grid;grid-template-columns:1fr auto auto;gap:6px}.chat-clear-btn{border:1px solid var(--line);border-radius:8px;background:#f6f5f1;color:#888780;padding:0 9px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}.chat-clear-btn:hover{background:#f7687a1f;color:var(--danger);border-color:var(--danger)}.session-panel.expanded{position:fixed;left:18px;right:18px;top:190px;bottom:14px;z-index:50;max-height:none;box-shadow:0 18px 50px #0006}.session-panel.expanded .message-list{flex:1 1 auto;max-height:none;align-content:start}.session-panel.expanded .chat-form,.session-panel.expanded .quick-actions,.session-panel.expanded .task-draft{flex:0 0 auto}.session-header-row .expand-btn{align-self:flex-start;line-height:1;padding-top:6px;padding-bottom:6px}@media(max-width:1200px){.project-list-grid,.kpi-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.planner-grid,.view-layout-row{grid-template-columns:1fr}.view-switch-box{min-width:0}.session-panel{position:static}.loop-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.top-nav{align-items:stretch;flex-direction:column}.top-search{width:100%}.top-menu{margin-left:0;width:100%;justify-content:flex-start}.planner-subnav{gap:10px}.project-list-grid,.modal-grid{grid-template-columns:1fr}.user-chip{display:inline-flex;align-items:center;gap:8px}.user-chip span{width:22px;height:22px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#eeedfe;color:#3c3489;font-size:11px;font-weight:600}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1f1e1b80;display:flex;justify-content:center;align-items:center;padding:14px;z-index:50}.modal-card{width:min(400px,100%);background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px;display:grid;gap:10px}.modal-card label{display:grid;gap:6px;color:var(--text-dim);font-size:.85rem}.modal-card input{border:1px solid var(--line);border-radius:10px;padding:8px 10px}.modal-actions{display:flex;gap:8px}.auth-message{color:var(--text-tertiary);font-size:.8rem}.modal-title{font-size:20px;font-weight:500;line-height:1.2}.modal-subtitle{font-size:12px;line-height:1.5;color:var(--text-dim)}.inline-actions{display:flex;gap:8px}.inline-actions-end{justify-content:flex-end}.modal-btn{min-width:96px;height:38px;padding:0 14px;border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;border:none}.modal-btn-primary{background:#534ab7;color:#fff}.modal-btn-secondary{background:var(--bg-soft);color:var(--text-dim);border:1px solid var(--line)}.check-row{grid-column:span 1}.loop-grid,.kpi-strip{grid-template-columns:1fr}.session-panel.expanded{left:8px;right:8px;bottom:8px;max-height:80vh}}
