/* ═══════════════════════════════════════════════════════════════════════════
   v3 features — What-If mode · Projects · Calendar · Kanban
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── What-If banner above the Gantt ── */
.whatif-bar { margin: 0 0 .5rem; }
.whatif-bar:empty { display: none; }
.wi-idle { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; padding: .5rem .7rem; background: var(--slate-100); border: 1px solid var(--slate-200); border-radius: var(--radius); }
.wi-hint { font-size: .76rem; color: var(--slate); }
.wi-importlbl { cursor: pointer; }
.wi-active { display: flex; align-items: center; gap: .8rem; flex-wrap: wrap; padding: .55rem .8rem; background: linear-gradient(90deg, var(--accent-bg), var(--white)); border: 1px solid var(--blue-light); border-left: 4px solid var(--blue); border-radius: var(--radius); box-shadow: var(--shadow); }
.wi-tag { font-size: .64rem; font-weight: 800; letter-spacing: .08em; color: #fff; background: var(--blue); padding: .2rem .45rem; border-radius: 5px; }
.wi-name { font-size: .85rem; font-weight: 600; border: 1px solid var(--slate-200); border-radius: 6px; padding: .3rem .5rem; min-width: 200px; font-family: inherit; }
.wi-stat { display: flex; flex-direction: column; line-height: 1.1; }
.wi-stat label { font-size: .6rem; text-transform: uppercase; letter-spacing: .05em; color: var(--slate); }
.wi-stat b { font-size: .85rem; color: var(--slate-900); }
.wi-stat b.is-late { color: var(--red); }
.wi-stat b.is-early { color: var(--green); }
.wi-chip { font-size: .78rem; font-weight: 700; padding: .25rem .55rem; border-radius: 999px; }
.wi-chip.late { background: var(--red-bg); color: var(--red); }
.wi-chip.early { background: var(--green-bg); color: var(--green); }
.wi-chip.flat { background: var(--slate-100); color: var(--slate-700); }
.wi-actions { display: flex; gap: .35rem; margin-left: auto; }

/* ── Gantt what-if drag affordances ── */
.gantt-whatif .gantt-bar[data-drag], .gantt-whatif .gantt-milestone[data-drag] { cursor: grab; }
.gantt-whatif .gantt-bar.wi-dragging { cursor: grabbing; opacity: .85; z-index: 40; box-shadow: 0 2px 8px rgba(0,0,0,.25); }
.gantt-bar.wi-moved { outline: 2px solid var(--amber); outline-offset: 1px; }
.gantt-milestone.wi-moved { outline: 2px solid var(--amber); }
.gantt-bar.wi-locked { opacity: .85; }
.gantt-resize { position: absolute; right: -2px; top: 0; width: 8px; height: 100%; cursor: ew-resize; border-radius: 0 3px 3px 0; }
.gantt-whatif .gantt-resize:hover { background: rgba(37,99,235,.4); }
.gantt-linknub { position: absolute; width: 8px; height: 8px; border-radius: 50%; background: var(--blue); border: 2px solid #fff; box-shadow: 0 0 0 1px var(--blue); cursor: crosshair; z-index: 30; }
.gantt-linknub:hover { transform: scale(1.35); }
.gantt-linkdraw { overflow: visible; }

/* toast */
.gantt-toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(20px); background: #0f172a; color: #fff; padding: .6rem 1rem; border-radius: 8px; font-size: .82rem; font-weight: 500; opacity: 0; pointer-events: none; transition: all .25s ease; z-index: 9999; box-shadow: var(--shadow-lg); }
.gantt-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.gantt-toast.err { background: var(--red); }
.gantt-toast.ok { background: var(--green); color: #0f172a; }

/* ── Projects overlay ── */
.proj-screen { position: fixed; inset: 0; background: var(--slate-100); z-index: 4000; display: flex; flex-direction: column; overflow: hidden; }
.proj-screen.hidden { display: none; }
.proj-head { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.5rem; background: var(--white); border-bottom: 1px solid var(--slate-200); }
.proj-head h2 { display: flex; align-items: center; gap: .5rem; font-size: 1.1rem; margin: 0; }
.proj-head-actions { display: flex; gap: .5rem; align-items: center; }
.proj-body { flex: 1; overflow-y: auto; padding: 1.25rem 1.5rem; }
.proj-empty { text-align: center; color: var(--slate); padding: 3rem 1rem; }
.proj-empty.err { color: var(--red); }
.proj-empty.sm { padding: 1rem; font-size: .82rem; }
.proj-card { background: var(--white); border: 1px solid var(--slate-200); border-radius: var(--radius); margin-bottom: .75rem; overflow: hidden; }
.proj-card.current { border-color: var(--blue); box-shadow: 0 0 0 1px var(--blue-light); }
.proj-main { display: flex; align-items: center; justify-content: space-between; padding: .9rem 1.1rem; gap: 1rem; }
.proj-name { font-weight: 700; font-size: .98rem; color: var(--slate-900); }
.proj-curtag { font-size: .6rem; background: var(--blue); color: #fff; padding: .1rem .35rem; border-radius: 4px; vertical-align: middle; }
.proj-meta { display: flex; flex-wrap: wrap; gap: .9rem; margin-top: .3rem; font-size: .75rem; color: var(--slate); }
.proj-owner { margin-left: auto; font-style: italic; }
.proj-actions { display: flex; gap: .35rem; flex-shrink: 0; }
.proj-del:hover, .scn-del:hover { color: var(--red); border-color: var(--red); }
.proj-scenarios { border-top: 1px solid var(--slate-200); background: var(--slate-100); padding: .5rem .75rem; }
.proj-scenarios.hidden { display: none; }
.scn-row { display: flex; align-items: center; justify-content: space-between; padding: .5rem .6rem; background: var(--white); border: 1px solid var(--slate-200); border-radius: 8px; margin-bottom: .4rem; }
.scn-name { font-weight: 600; font-size: .85rem; }
.scn-meta { font-size: .72rem; color: var(--slate); margin-top: .15rem; }
.scn-actions { display: flex; gap: .35rem; }

/* ── Calendar view ── */
.cal-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; margin-bottom: 1rem; }
.cal-subtabs { display: flex; gap: .25rem; background: var(--slate-100); padding: .25rem; border-radius: 8px; }
.cal-subtab { border: none; background: transparent; padding: .4rem .9rem; border-radius: 6px; font-size: .82rem; font-weight: 600; color: var(--slate); cursor: pointer; font-family: inherit; }
.cal-subtab.active { background: var(--white); color: var(--accent-text); box-shadow: var(--shadow); }
.cal-nav { display: flex; align-items: center; gap: .5rem; }
.cal-month { font-weight: 700; font-size: 1rem; min-width: 150px; text-align: center; }
.cal-legend { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: .6rem; font-size: .74rem; color: var(--slate-700); align-items: center; }
.cal-legend span { display: flex; align-items: center; gap: .35rem; }
.cl-dot { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.cl-dot.todo { background: var(--slate-300); }
.cl-dot.prog { background: var(--blue); }
.cl-dot.done { background: var(--green); }
.cl-dot.mile { background: var(--violet); }
.cl-dot.wt-work { background: var(--green-bg); border: 1px solid var(--green); }
.cl-dot.wt-off { background: var(--slate-200); }
.cl-dot.wt-holiday { background: var(--red-bg); border: 1px solid var(--red); }
.cl-dd { width: 3px; height: 12px; background: var(--red); display: inline-block; }
.cal-scn { margin-left: auto; color: var(--accent-text); font-weight: 600; }
.cal-grid { background: var(--white); border: 1px solid var(--slate-200); border-radius: var(--radius); overflow: hidden; }
.cal-dowrow { display: grid; grid-template-columns: repeat(7, 1fr); background: var(--slate-100); }
.cal-dow { padding: .5rem; text-align: center; font-size: .72rem; font-weight: 700; color: var(--slate); text-transform: uppercase; }
.cal-cells { display: grid; grid-template-columns: repeat(7, 1fr); }
.cal-cell { min-height: 92px; border-right: 1px solid var(--slate-200); border-bottom: 1px solid var(--slate-200); padding: .25rem; position: relative; }
.cal-cell.empty { background: var(--slate-100); }
.cal-cell.today { background: var(--warn-bg); }
.cal-cell.is-dd { box-shadow: inset 3px 0 0 var(--red); }
.cal-date { font-size: .72rem; font-weight: 600; color: var(--slate-700); margin-bottom: .15rem; }
.cal-cellbody { display: flex; flex-direction: column; gap: 2px; }
.cal-chip { font-size: .66rem; padding: .1rem .3rem; border-radius: 4px; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid var(--slate-300); background: var(--slate-100); }
.cal-chip:hover { filter: brightness(.95); }
.cal-chip.prog { border-color: var(--blue); background: var(--blue-light); }
.cal-chip.done { border-color: var(--green); background: var(--green-bg); }
.cal-chip.mile { border-color: var(--violet); background: var(--violet-bg); }
.cal-ongoing { font-size: .62rem; color: var(--slate); font-style: italic; }
.wt-bar { display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap; margin-bottom: .75rem; }
.wt-bar select { padding: .35rem .5rem; border: 1px solid var(--slate-200); border-radius: 6px; font-family: inherit; font-size: .85rem; }
.wt-summary { display: flex; gap: 1.25rem; font-size: .8rem; color: var(--slate-700); }
.cal-cell.wt-work { background: var(--green-bg); }
.cal-cell.wt-off { background: var(--slate-100); }
.cal-cell.wt-holiday { background: var(--red-bg); }
.wt-tag { font-size: .62rem; font-weight: 600; color: var(--slate); }
.cal-cell.wt-holiday .wt-tag { color: var(--red); }

/* ── Kanban ── */
.kb-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; margin-bottom: 1rem; }
.kb-title { font-weight: 700; font-size: 1rem; }
.kb-scn { color: var(--accent-text); font-weight: 600; font-size: .82rem; }
.kb-fieldmgr { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.kb-fieldtag { display: inline-flex; align-items: center; gap: .25rem; font-size: .72rem; background: var(--slate-100); border: 1px solid var(--slate-200); padding: .2rem .25rem .2rem .5rem; border-radius: 6px; }
.kb-fieldtag button { border: none; background: none; cursor: pointer; color: var(--slate); font-size: .9rem; line-height: 1; padding: 0 .2rem; }
.kb-fieldtag button:hover { color: var(--red); }
.kb-board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; align-items: start; }
.kb-col { background: var(--slate-100); border-radius: var(--radius); border: 1px solid var(--slate-200); }
.kb-colhead { display: flex; align-items: center; justify-content: space-between; padding: .65rem .85rem; font-weight: 700; font-size: .85rem; border-bottom: 1px solid var(--slate-200); }
.kb-count { background: var(--slate-200); color: var(--slate-700); font-size: .72rem; padding: .1rem .45rem; border-radius: 999px; }
.kb-dropzone { padding: .6rem; min-height: 120px; display: flex; flex-direction: column; gap: .55rem; transition: background .15s; }
.kb-dropzone.over { background: var(--blue-light); }
.kb-card { background: var(--white); border: 1px solid var(--slate-200); border-left: 3px solid var(--slate-300); border-radius: 8px; padding: .6rem .7rem; cursor: grab; box-shadow: var(--shadow); }
.kb-card.crit { border-left-color: var(--red); }
.kb-card.dragging { opacity: .5; }
.kb-card-top { display: flex; justify-content: space-between; align-items: center; }
.kb-code { font-weight: 700; font-size: .8rem; color: var(--slate-900); }
.kb-float { font-size: .68rem; color: var(--slate); }
.kb-float.neg { color: var(--red); font-weight: 600; }
.kb-card-name { font-size: .8rem; color: var(--slate-700); margin: .2rem 0; line-height: 1.3; }
.kb-card-dates { font-size: .7rem; color: var(--slate); }
.kb-fields { margin-top: .5rem; padding-top: .5rem; border-top: 1px dashed var(--slate-200); display: flex; flex-direction: column; gap: .35rem; }
.kb-field { display: flex; flex-direction: column; gap: .15rem; }
.kb-field label { font-size: .62rem; text-transform: uppercase; letter-spacing: .04em; color: var(--slate); }
.kb-input { padding: .25rem .4rem; border: 1px solid var(--slate-200); border-radius: 5px; font-size: .76rem; font-family: inherit; }

@media (max-width: 800px) { .kb-board { grid-template-columns: 1fr; } }

/* dark-mode AA contrast: dark --red (#fb7185) is too light for white toast text */
:root[data-theme="dark"] .gantt-toast.err { color: #0f172a; }
