
.planner-main { height: calc(100vh - 42px); min-height: 0; overflow: hidden; }
.planner-grid { height: 100%; min-height: 0; }
.planner-sidebar { height: 100%; min-height: 0; overflow-y: auto; overflow-x: hidden; }
button:not(:disabled) { transition: background-color .15s ease, filter .15s ease, box-shadow .15s ease; }
button:not(:disabled):hover { box-shadow: inset 0 0 0 999px rgba(15, 23, 42, .06); }
button.border:not(:disabled):hover { background:#f1f5f9; }
button.bg-blue-700:not(:disabled):hover { box-shadow: inset 0 0 0 999px rgba(0, 0, 0, .12); filter:brightness(.98); }

.ticket-item.dragging { opacity: 0.4; }
.developer-header { display:flex; justify-content:space-between; align-items:center; min-height:22px; padding:2px 0; }
.modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,.35); display:flex; align-items:center; justify-content:center; z-index:50; }
.modal-overlay.hidden { display:none; }
.modal-card { background:#fff; border-radius:8px; width:600px; max-width:95vw; padding:16px; }

.progress-modal-card { width:520px; max-width:95vw; }
.progress-status-text { font-size:14px; margin-bottom:10px; color:#0f172a; }
.progress-row { display:flex; align-items:center; gap:12px; }
.progress-track { flex:1 1 auto; height:10px; border-radius:999px; background:#e2e8f0; overflow:hidden; border:1px solid #cbd5e1; }
.progress-fill { height:100%; width:0%; background:#334155; border-radius:inherit; transition:width .15s ease; }
.progress-count { width:68px; text-align:right; font-size:12px; color:#0f172a; }

.progress-actions { margin-top:12px; display:flex; justify-content:flex-end; }
.bar-ticket { cursor:pointer; transition: transform .16s ease, opacity .16s ease, filter .16s ease; }
.bar-ticket.chart-ticket-shift { transition-duration: .2s; }
.bar-ticket.chart-ticket-dragging { filter: drop-shadow(0 6px 10px rgba(15, 23, 42, .25)); }
.bar-ticket.chart-ticket-drag-origin { opacity:.85; }
.bar-ticket.chart-ticket-jump-candidate { animation: chart-jump-glow .55s ease-in-out infinite; }

@keyframes chart-jump-glow {
  0%, 100% { filter: drop-shadow(0 6px 10px rgba(15, 23, 42, .25)); }
  50% { filter: drop-shadow(0 8px 14px rgba(234, 88, 12, .5)); }
}

.bar-ticket-label { transition: transform .16s ease; }

.icon-btn,
.gear-btn,
.export-btn { border:0; background:transparent; color:#374151; border-radius:4px; }
.icon-btn { width:22px; height:22px; padding:0; display:inline-flex; align-items:center; justify-content:center; font-size:16px; line-height:1; }
.gear-btn { width:22px; height:22px; padding:0; color:#374151; display:inline-flex; align-items:center; justify-content:center; }
.gear-btn svg { width:16px; height:16px; display:block; }
.icon-btn[hidden],
.gear-btn[hidden],
.export-btn[hidden] { display:none; }
.gear-btn:hover,
.icon-btn:hover { background:#e5e7eb; }
.sync-btn { color:#374151; }
.sync-btn .sync-icon { width:20px; height:20px; display:block; }
.sync-btn .jira-triangle { transform-origin:127.662px 112.346px; transform-box:view-box; }
.sync-btn.syncing .jira-triangle-1,
.sync-btn.syncing .jira-triangle-2,
.sync-btn.syncing .jira-triangle-3 { animation: jira-triangle-leapfrog 1.05s cubic-bezier(.55,.08,.4,.95) infinite; }
.sync-btn.syncing .jira-triangle-2 { animation-delay:.35s; }
.sync-btn.syncing .jira-triangle-3 { animation-delay:.7s; }
.undo-btn { color:#64748b; }
.undo-btn .undo-icon { width:18px; height:18px; display:block; fill:currentColor; }
.undo-btn:disabled { color:#cbd5e1; cursor:not-allowed; }
.undo-btn:disabled:hover { background:transparent; }
@keyframes jira-triangle-leapfrog {
  0% { transform: translate(-1px, 2px) scale(.84); opacity:.62; }
  28% { transform: translate(3px, -1px) scale(1.14); opacity:1; }
  58% { transform: translate(1px, -3px) scale(.92); opacity:.78; }
  100% { transform: translate(-1px, 2px) scale(.84); opacity:.62; }
}
@keyframes spin-sync { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

.developer-header .gear-btn,
.admin-dev-item .gear-btn { visibility:hidden; }
section:hover .developer-header .gear-btn,
.admin-dev-item:hover .gear-btn { visibility:visible; }

#sprint-tabs-header { position:relative; }

#sprint-tabs-header::after {
  content:'';
  position:absolute;
  left:var(--active-tab-mask-left, 0px);
  width:var(--active-tab-mask-width, 0px);
  bottom:-1px;
  height:2px;
  background:#fff;
  pointer-events:none;
}

.sprint-tab { position:relative; border:1px solid #cbd5e1; border-bottom:none; border-radius:8px 8px 0 0; background:#f8fafc; color:#475569; padding:5px 8px 5px; min-width:0; text-align:left; transition: background .15s ease, color .15s ease, padding .15s ease; margin-right:-1px; overflow:hidden; }
.sprint-tab:hover:not(.active) { background:#eef2f7; color:#334155; }
.sprint-tab.active { background:#fff; color:#111827; margin-bottom:-1px; padding-top:6px; padding-bottom:6px; cursor:default; }
.sprint-tab.active:hover { box-shadow:none; }
.sprint-tab.preview { background:#e2e8f0; color:#1f2937; }
.sprint-tab.preview::after { content:''; position:absolute; inset:0; background:rgba(248, 250, 252, .35); pointer-events:none; }
.sprint-tab.preview .sprint-tab-name,
.sprint-tab.preview .sprint-tab-dates { opacity:.72; }

#sprint-visual-area { position:relative; display:flex; flex-direction:column; flex:1 1 auto; min-height:0; }
#sprint-visual-area.preview-haze::after { content:''; position:absolute; inset:0; background:rgba(248, 250, 252, .28); pointer-events:none; z-index:12; }
#sprint-visual-area.preview-haze #sprint-topbar,
#sprint-visual-area.preview-haze #sprint-title,
#sprint-visual-area.preview-haze #chart-container { opacity:.8; }

.sprint-tab-name { display:flex; align-items:center; gap:4px; font-size:11px; line-height:1.1; }
.sprint-tab-dates { display:block; font-size:10px; color:#64748b; margin-top:1px; }
#sprint-tabs-viewport { overflow:hidden; min-width:0; flex:1 1 auto; margin-left:-.5rem; padding-left:.5rem; }
#sprint-tabs { width:max-content; }
#sprint-tabs.has-toggle-gap { margin-left:1.3rem; }

#show-archived-sprints-btn { font-size:18px; line-height:1; width:24px; height:24px; margin-bottom:2px; }


.export-btn { display:inline-flex; align-items:center; justify-content:center; color:#374151; width:22px; height:22px; padding:0; }
.export-icon { width:16px; height:16px; }
.export-menu { display:none; position:absolute; right:0; top:100%; background:#fff; border:1px solid #cbd5e1; border-radius:6px; box-shadow:0 6px 20px rgba(0,0,0,.08); z-index:40; min-width:190px; }
.export-menu button { display:block; width:100%; text-align:left; font-size:12px; padding:6px 10px; white-space:nowrap; }
.export-menu button:hover { background:#f1f5f9; }
.export-menu.open { display:block; }

.lock-icon { width:12px; height:12px; color:#374151; }
.lock-toggle-row { display:flex; align-items:center; gap:8px; font-size:12px; color:#334155; }
.lock-state-icon { width:14px; height:14px; color:#475569; display:inline-flex; }
.lock-state-icon svg { width:14px; height:14px; }
.switch { position:relative; display:inline-block; width:36px; height:20px; }
.switch input { opacity:0; width:0; height:0; }
.slider { position:absolute; cursor:pointer; inset:0; background:#cbd5e1; transition:.2s; border-radius:999px; }
.slider:before { position:absolute; content:""; height:14px; width:14px; left:3px; top:3px; background:#f8fafc; transition:.2s; border-radius:50%; }
.switch input:checked + .slider { background:#2563eb; }
.switch input:checked + .slider:before { transform:translateX(16px); }
.switch input:disabled + .slider { cursor:not-allowed; opacity:.6; }

.switch-blue .slider { background:#2563eb; }
.switch-blue input:checked + .slider { background:#2563eb; }
.switch-blue .slider:before { background:#f8fafc; }




.ticket-lane {
  background:#fdfefe;
  border:1px solid #edf2f7;
  border-radius:6px;
  padding:8px;
  min-height:52px;
}

.ticket-item { position:relative; border:1px solid #d1d5db; border-radius:4px; padding:8px; background:#f8fafc; }
.ticket-top-row { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.ticket-code-row { font-size:12px; font-weight:600; line-height:1.25; }
.ticket-name-row { font-size:12px; line-height:1.25; color:#0f172a; margin-top:2px; }
.ticket-meta-row { font-size:11px; color:#64748b; margin-top:3px; }

.ticket-actions { display:inline-flex; align-items:center; gap:3px; }
.ticket-sync-btn, .ticket-remove-btn, .ticket-add-btn { width:16px; height:16px; color:#475569; opacity:0; border:0; background:transparent; border-radius:3px; display:inline-flex; align-items:center; justify-content:center; }
.ticket-remove-btn, .ticket-add-btn { font-size:12px; }
.ticket-sync-btn svg { width:12px; height:12px; }
.ticket-item:hover .ticket-sync-btn, .ticket-item:hover .ticket-remove-btn, .ticket-item:hover .ticket-add-btn { opacity:1; }
.ticket-sync-btn:hover, .ticket-remove-btn:hover, .ticket-add-btn:hover { background:#e5e7eb; }
.ticket-sync-btn.syncing svg { animation: spin-sync .9s linear infinite; }

.ticket-code-link { color:#0f172a; text-decoration:none; }
.ticket-code-link:hover { color:#2563eb; text-decoration:underline; }

.ticket-insert-gap { list-style:none; height:4px; margin:0; overflow:visible; transition:height .18s ease; }
.ticket-insert-gap.edge { height:6px; }
.ticket-static-gap { list-style:none; height:4px; margin:0; }
.ticket-insert-shell { max-height:0; opacity:0; transform:translateY(-2px); overflow:hidden; transition:max-height .18s ease, opacity .14s ease, transform .18s ease; pointer-events:none; }
.ticket-insert-input { width:100%; border:1px dashed #94a3b8; border-radius:4px; background:#f8fafc; color:#0f172a; font-size:11px; line-height:1.2; padding:5px 8px; }
.ticket-insert-input:focus { outline:none; border-color:#475569; background:#fff; box-shadow:0 0 0 2px rgba(148,163,184,.2); }
.ticket-insert-gap.active { height:34px; }
.ticket-insert-gap.active .ticket-insert-shell { max-height:32px; opacity:1; transform:translateY(0); pointer-events:auto; }


.sprint-panel { display:flex; flex-direction:column; height:calc(100vh - 38px); min-height:520px; }
.sprint-panel-actions { flex:0 0 auto; }
.sprint-topbar { position:relative; z-index:25; min-height:36px; padding:8px 6px 0; }
#sprint-topbar-actions { z-index:35; }
.sprint-title { margin:0; text-align:center; font-size:20px; line-height:1; font-weight:700; color:#000; padding-top:4px; }
.sprint-chart-container { flex:1 1 auto; min-height:360px; }

#sprint-export-hover-wrap { position:relative; display:inline-flex; align-items:center; }
#sprint-export-hover-wrap:hover #current-export-menu:not(.manual-close),
#current-export-menu:hover:not(.manual-close) { display:block; }

.dev-collapse-btn { border:0; background:transparent; font-size:11px; color:#475569; padding:0; line-height:1; }

.menu-hover-wrap { position:relative; display:inline-flex; align-items:center; }
#menu-toggle { width:22px; height:22px; display:inline-flex; align-items:center; justify-content:center; font-size:15px; line-height:1; border-radius:4px; transition:background-color .15s ease; }
#menu-toggle:hover { background:#cbd5e1; }
#menu-dropdown { top:100%; min-width:11rem; }
#menu-dropdown a,
#menu-dropdown button { white-space:nowrap; }
#menu-dropdown a:hover,
#menu-dropdown button:hover { background:#f1f5f9; }

.backlog-dev-section { cursor:pointer; border:1px solid #cbd5e1; border-radius:6px; padding:8px; background:#fff; }
.backlog-dev-section .developer-header { cursor:pointer; }
.unplanned-group { background:#fff; border:0; padding:0; }
.backlog-dev-section.is-expanded { cursor:pointer; }
.backlog-dev-section.is-collapsed * { cursor:pointer; }
.backlog-dev-section .developer-header .gear-btn, .backlog-dev-section .developer-header .dev-collapse-btn { cursor:pointer; }

.site-logo { width:18px; height:18px; display:block; }

.working-hours-cell { display:inline-flex; align-items:center; gap:6px; }
.working-hours-day { min-width:20px; display:inline-block; }
.working-hours-input { width:86px; }

.section-toggle-header { cursor:pointer; user-select:none; }
