/* Module: steps
   Consolidates route styles for #route-steps, including migrated legacy
   blocks formerly loaded via steps-card-*.css and steps-episode-meta.css. */

/* Preserva la regola mobile presente nello storico index.css */
@media (max-width: 768px){
  .step-card{ padding: 12px; }
  .step-card .drag-handle{ width: 28px; height: 28px; margin-right: 8px; }
  .act-body{ min-height: 80px; }
}


/* Extracted from core/utilities.css (phase 2, conservative) */
#route-steps .steps-episode-meta-form{
  grid-template-columns: minmax(0, 2.5fr) minmax(200px, .55fr);
}#route-steps .sidebar{
  display: flex;
  flex-direction: column;
  gap: 0;
  overflow-x: hidden;
}#route-steps .sidebar .steps-sidebar-sticky{
  display: flex;
  flex-direction: column;
  min-height: 100%;
  height: 100%;
  gap: 0;
  padding: 16px 12px 12px !important;
}#route-steps .steps-sidebar-pane{
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
}#route-steps .steps-episodes-head{
  margin: 0 0 10px !important;
}#route-steps .steps-episodes-label-wrap{
  display: flex !important;
  width: 100% !important;
  justify-content: flex-start !important;
  align-items: center !important;
  gap: 6px !important;
}#route-steps .sidebar-head{
  margin-bottom: 6px;
}#route-steps .series-title{
  font-weight: 700;
  font-size: 1.05rem;
  color: var(--text);
}#route-steps .series-sub{
  color: var(--muted);
  font-size: .92rem;
  margin-top: 2px;
}#route-steps .episode-actions{
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: center;
}#route-steps .episode-list{
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow: auto;
  padding-bottom: 2px;
}#route-steps .notes-swipe-row{
  position: relative;
  border-radius: 8px;
  overflow: hidden;
}#route-steps .notes-swipe-actions{
  position: absolute;
  inset: 0 0 0 auto;
  width: 76px;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
  padding-right: 4px;
  background: var(--ms-color-surface-primary);
  opacity: 0;
  transform: translateX(14px);
  transition: opacity .15s ease, transform .18s ease;
  pointer-events: none;
  z-index: 1;
}#route-steps .notes-swipe-content{
  position: relative;
  z-index: 2;
  width: 100%;
  transition: transform .18s ease;
  touch-action: pan-y;
  user-select: none;
}#route-steps .notes-swipe-row.is-open .notes-swipe-actions,
#route-steps .notes-swipe-row.is-dragging .notes-swipe-actions{
  opacity: 1;
  transform: translateX(0);
}#route-steps .notes-swipe-row.is-open .notes-swipe-actions{
  pointer-events: auto;
}#route-steps .notes-icon-action{
  width: 30px;
  min-width: 30px;
  height: 30px;
  min-height: 30px;
  padding: 0;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: .8rem;
  line-height: 1;
  background: var(--bg-elevated, var(--surface-raised));
  border: 1px solid var(--border-subtle);
  color: var(--text-primary);
  box-shadow: none;
}#route-steps .notes-icon-action.red{
  background: color-mix(in srgb, var(--error) 32%, var(--bg-elevated, var(--surface-raised)));
  border-color: color-mix(in srgb, var(--error) 40%, transparent);
  color: var(--text-primary);
}#route-steps .notes-icon-action .ms-action-icon-svg{
  width:14px;
  height:14px;
  stroke:currentColor;
  fill:none;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}#route-steps .notes-icon-action .ms-action-icon-svg *{
  stroke:currentColor;
  fill:none;
}#route-steps :is(.act-action-icon-btn,.block-action-icon-btn,.scm-close) .ms-action-icon-svg{
  stroke:currentColor;
  fill:none;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}#route-steps :is(.act-action-icon-btn,.block-action-icon-btn,.scm-close) .ms-action-icon-svg *{
  stroke:currentColor;
  fill:none;
}#route-steps .episode-item{
  border: 1px solid var(--border);
  background: var(--surface-raised);
  color: var(--muted);
  border-radius: 8px;
  padding: 9px 11px;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  text-align: left;
  cursor: pointer;
  user-select: none;
}#route-steps .episode-status-dot{
  width: 9px;
  height: 9px;
  border-radius: 50%;
  flex: 0 0 auto;
  border: 1px solid rgba(255,255,255,.28);
}#route-steps .episode-status-dot.status-done{ background: var(--status-done); }#route-steps .episode-status-dot.status-wip{ background: var(--status-wip); }#route-steps .episode-status-dot.status-todo{ background: var(--status-todo); }#route-steps .episode-label-text{
  display: inline-block;
  min-width: 0;
}#route-steps .episode-item:hover{
  border-color:var(--border-strong, var(--ms-color-border-strong, #3b5478));
  background:var(--state-hover-bg, color-mix(in srgb, var(--accent-soft, #14243a) 24%, var(--surface-panel, #1f2533) 76%));
  color:var(--text-primary, var(--ms-color-text-primary, #eef2ff));
}#route-steps .episode-item.active{
  border-color:var(--state-selected-border, var(--accent-3, #78a4ff));
  background:var(--state-selected-bg, color-mix(in srgb, var(--accent-3, #78a4ff) 22%, var(--surface-panel, #161d33) 78%));
  color:var(--text-primary, var(--ms-color-text-primary, #eef2ff));
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--state-selected-border, #78a4ff) 62%, transparent 38%);
}#route-steps .episode-footer{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}#route-steps :is(.panel,.route-main){
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 0;
}#route-steps .board-title{
  margin: 0;
  padding: 0 2px;
  font-size: 1.75rem;
  line-height: 1.2;
  font-weight: 800;
}#route-steps .steps-episode-title-row{
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}#route-steps .steps-episode-complete{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .9rem;
  color: var(--muted);
}#route-steps .steps-episode-complete .select{
  min-width: 170px;
}#route-steps .board-head{
  margin: 0;
  border-bottom: 1px solid var(--border);
  padding-bottom: 10px;
}#route-steps .board-actions{
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}#route-steps .board-actions .steps-print-board-btn{
  order:99;
  margin-left:auto;
  width:32px;
  min-width:32px;
  height:32px;
  padding:0;
  gap:0;
}#route-steps .board-actions .steps-print-board-btn .btn-icon{
  margin:0;
  width:14px;
  height:14px;
  flex:0 0 14px;
}#route-steps .board-actions .steps-print-board-btn .btn-label{
  display:none !important;
}
@media (max-width: 980px){
  #route-steps .board-actions .steps-print-board-btn{
    order:0;
    margin-left:0;
  }
}#route-steps .act-col{
  /* atto = sezione editoriale — blocco unico consolidato (erano 3 def).
     L'aspetto "pannello" (#29313d, bordo, padding) arriva dal più specifico
     "#route-steps #acts > .act-col". */
  border: 0;
  background: transparent;
  border-radius: 0;
  display: flex !important;
  flex-direction: column !important;
  padding-bottom: 12px;
  min-height: 0 !important;
  height: auto !important;
  overflow: visible !important;
  position: relative !important;
}#route-steps .act-head{
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 12px;
  padding: 8px;
  border-radius: 8px;
  background: var(--surface-raised);
}
/* batte unified-pass.css:7278 [data-theme-resolved] #route-steps .act-head (1,2,0)!important
   che forzava background:transparent → il chip non si vedeva */
:is([data-theme-resolved="dark"], body.theme-dark) #route-steps .act-head{
  background: var(--surface-raised) !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
}#route-steps .act-head-info{
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
  min-width: 0;
}#route-steps .act-title{
  font-family: var(--font-display, var(--font-serif));
  font-weight: 600;
  font-size: 1.15rem;
  color: var(--text-primary);
}#route-steps .act-count{
  display: inline-flex;
  align-items: center;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--text-tertiary, var(--text-muted));
  font-size: .78rem;
  white-space: nowrap;
}#route-steps .act-duration{
  white-space: nowrap;
  color: var(--text-tertiary, var(--text-muted));
  font-size: .78rem;
}#route-steps .act-actions{
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  margin-left: 0;
}#route-steps .act-actions .act-action-icon-btn{
  width: 30px;
  min-width: 30px;
  height: 30px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: .9rem;
  line-height: 1;
  border-radius: 8px;
}#route-steps .act-actions .act-action-icon-btn:not(.is-danger){
  background: transparent;
  border-color: transparent;
  color: var(--text-secondary);
}#route-steps .act-actions .act-action-icon-btn:not(.is-danger):hover{
  border-color: transparent;
  background: var(--state-hover-bg, rgba(255,255,255,.05));
  color: var(--text-primary);
}
/* delete atto → tinta rossa soft all'hover (azione distruttiva) */
#route-steps .act-actions .act-action-icon-btn[data-act-action="delete"]:hover{
  color: var(--error);
  background: color-mix(in srgb, var(--error) 14%, transparent);
}#route-steps .act-actions .act-action-icon-btn.is-danger{
  font-size: .98rem;
}#route-steps .act-actions .act-action-icon-btn .ms-action-icon-svg{
  width:16px;
  height:16px;
  stroke:currentColor;
  fill:none;
  stroke-width:2;
}#route-steps .steps-create-card-btn{
  width: 320px;
  max-width: calc(100% - 2px);
  min-height: 226px;
  align-self: flex-start;
  flex: 0 0 320px;
  border: 1px dashed var(--editorial-line, var(--line-soft));
  border-radius: var(--radius-card, 12px);
  background: transparent;
  color: var(--text-tertiary);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-align: center;
  cursor: pointer;
  transition: border-color .16s ease, background-color .16s ease, color .16s ease;
}
#route-steps .steps-create-card-btn:hover{
  border-color: color-mix(in srgb, var(--accent) 50%, var(--editorial-line, var(--line-soft)));
  background: color-mix(in srgb, var(--accent) 6%, transparent);
  color: var(--text-secondary);
}
#route-steps .steps-create-card-plus{
  display: block;
  font-size: clamp(28px, 2.4vw, 36px);
  line-height: 1;
  font-weight: 300;
  color: inherit;
}
#route-steps .steps-create-card-label{
  display: block;
  font-size: .84rem;
  color: inherit;
  letter-spacing: .01em;
}#route-steps .steps-act-empty{
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 112px;
  width: 100%;
  border: 1px dashed var(--editorial-line, var(--line-soft));
  border-radius: var(--radius-card, 12px);
  background: transparent;
  color: var(--text-tertiary, var(--text-muted));
  text-align: center;
  padding: 18px;
  pointer-events: none;
}#route-steps .act-body > .steps-act-empty{
  flex: 1 1 100%;
  width: 100%;
  max-width: none;
  align-self: stretch;
}#route-steps .steps-empty-state{
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 180px;
  border: 1px dashed var(--editorial-line, var(--line-soft));
  border-radius: var(--radius-card, 12px);
  background: transparent;
  text-align: center;
  padding: 18px;
}
/* ── Hero empty-state: nessun atto ── */
/* full-height: quando il board mostra solo la hero, il panel diventa flex-column
   (override del display:block!important di .panel a riga ~1223) e #acts riempie */
#route-steps :is(.panel,.route-main):has(.steps-empty-state--hero){
  display: flex !important;
  flex-direction: column !important;
}
#route-steps :is(.panel,.route-main):has(.steps-empty-state--hero) #acts{
  flex: 1 1 auto !important;   /* batte .acts{flex:none!important} riga ~1241 */
  min-height: 0 !important;
  overflow: hidden !important;
}
#route-steps .steps-empty-state--hero{
  flex: 1 1 auto;
  flex-direction: column;
  gap: 12px;
  min-height: 360px;
  padding: 48px 28px;
  border-color: color-mix(in srgb, var(--accent) 30%, var(--editorial-line, var(--line-soft)));
  background:
    radial-gradient(120% 90% at 50% 0%, color-mix(in srgb, var(--accent) 9%, transparent), transparent 60%);
}
#route-steps .steps-empty-art{
  color: var(--accent);
  width: 96px;
  height: 96px;
  margin-bottom: 4px;
  filter: drop-shadow(0 6px 18px color-mix(in srgb, var(--accent) 30%, transparent));
}
#route-steps .steps-empty-art svg{ width: 100%; height: 100%; }
#route-steps .steps-empty-art-page--back{ color: var(--control); opacity: .45; }
#route-steps .steps-empty-art-page--front{ fill: color-mix(in srgb, var(--surface-raised) 88%, var(--accent)); }
#route-steps .steps-empty-art-lines{ color: var(--text-tertiary); }
#route-steps .steps-empty-art-spark{ color: var(--accent); }
#route-steps .steps-empty-title{
  margin: 0;
  font-family: var(--font-serif, var(--font-sans));
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--text-primary);
}
#route-steps .steps-empty-text{
  margin: 0;
  max-width: 380px;
  font-size: var(--text-sm, .9rem);
  line-height: 1.55;
  color: var(--text-secondary);
}
#route-steps #acts .steps-empty-cta{
  margin-top: 10px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 22px;
  border-radius: var(--radius-md, 10px);
  background: var(--accent);
  border: 1px solid var(--accent);
  color: #14181F;
  font-family: var(--font-sans);
  font-size: var(--text-sm, .9rem);
  font-weight: 600;
  letter-spacing: .01em;
  cursor: pointer;
  box-shadow: 0 4px 14px color-mix(in srgb, var(--accent) 26%, transparent);
  transition: transform 140ms ease, box-shadow 140ms ease, background 140ms ease;
}
#route-steps #acts .steps-empty-cta:hover{
  background: color-mix(in srgb, var(--accent) 88%, #fff);
  transform: translateY(-1px);
  box-shadow: 0 8px 22px color-mix(in srgb, var(--accent) 38%, transparent);
}
#route-steps #acts .steps-empty-cta:active{
  transform: translateY(0);
  box-shadow: 0 3px 10px color-mix(in srgb, var(--accent) 30%, transparent);
}
#route-steps #acts .steps-empty-cta:focus-visible{
  outline: 2px solid color-mix(in srgb, var(--accent) 60%, #fff);
  outline-offset: 2px;
}
#route-steps #acts .steps-empty-cta svg{ flex: 0 0 auto; }
#route-steps .block-card{
  width: 320px;
  max-width: calc(100% - 2px);
  min-height: 226px;
  align-self: flex-start;
  flex: 0 0 320px;
  height: auto;
  overflow: hidden;
  border: 1px solid var(--editorial-line, var(--line-soft));
  background: var(--block-bg, var(--surface-raised));   /* colore scelto sovrascrive il default */
  border-radius:var(--radius-card, 12px);
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  box-shadow:none;
  transition:border-color .16s ease, background-color .16s ease;
  cursor: default;
}#route-steps .block-card:hover{
  border-color:color-mix(in srgb, var(--accent) 36%, var(--editorial-line, var(--line-soft)));
}
/* Colore card PIENO: batte unified-pass:7357 che lo diluiva al 28%
   (color-mix surface-raised 72% / block-bg 28%). Stessa specificità (1,2,1),
   steps.css carica dopo unified-pass → vince. Default = surface-raised editoriale. */
:is([data-theme-resolved="dark"], body.theme-dark) #route-steps .block-card{
  background:var(--block-bg, var(--surface-raised)) !important;
}
:is([data-theme-resolved="dark"], body.theme-dark) #route-steps .block-card:hover{
  background:var(--block-bg, var(--surface-raised)) !important;
}
/* Card colorata + SELEZIONATA: l'accent della selezione diventa il colore
   della card (schiarito, così risalta sul fondo) invece del viola di default.
   Solo quando un colore è impostato; le card senza colore restano su accent.
   Spec (1,5,1) per battere unified-pass:7373 (1,3,1). */
:is([data-theme-resolved="dark"], body.theme-dark) #route-steps .block-card[data-color]:not([data-color=""]):is(.is-active, .is-linked-focus){
  background:var(--block-bg) !important;
  border-color:color-mix(in srgb, var(--block-bg) 45%, #ffffff) !important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--block-bg) 45%, #ffffff) !important;
}
/* Card con colore scelto: testi e icone restano BIANCHI/leggibili
   (i preset sono scuri; così le info non spariscono mai) */
#route-steps .block-card[data-color]:not([data-color=""]) .block-title{
  color:#fff;
}
#route-steps .block-card[data-color]:not([data-color=""]) .block-desc{
  color:rgba(255,255,255,.88);
}
#route-steps .block-card[data-color]:not([data-color=""]) :is(.block-flag, .block-time, .drag-handle){
  color:rgba(255,255,255,.78);
}
#route-steps .block-card[data-color]:not([data-color=""]) .block-actions{
  border-top-color:rgba(255,255,255,.16);
}
#route-steps .block-card.is-active{
  border-color:var(--state-selected-border, var(--accent-3, #78a4ff));
  box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--state-selected-border, #78a4ff) 62%, transparent 38%);
}#route-steps .block-card.is-linked-focus{
  animation:none;
  border-color:var(--state-selected-border, var(--accent-3, #78a4ff));
}#route-steps .block-card:focus-visible{
  outline: none;
  border-color:var(--state-selected-border, var(--accent-3, #78a4ff));
  box-shadow:0 0 0 2px var(--state-focus-ring, rgba(120,164,255,.22));
}
#route-steps .block-head{
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  grid-template-areas:
    "handle flags time"
    "title title time";
  align-items: start;
  gap: 8px 10px;
}#route-steps .block-flags{
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  grid-area: flags;
  min-width: 0;
}#route-steps .block-flag{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  border: 0;
  border-radius: 0;
  padding: 0;
  font-size: .72rem;
  line-height: 1.1;
  color: var(--text-tertiary, var(--text-muted));
  background: transparent;
  white-space: nowrap;
}#route-steps .block-head .drag-handle{
  grid-area: handle;
  align-self: start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 8px;
  border: 0;
  background: transparent;
  color: var(--text-tertiary);
  cursor: grab;
  user-select: none;
  line-height: 1;
  opacity: .42;
  transition: opacity .16s ease, background-color .16s ease;
}#route-steps .block-card:hover .block-head .drag-handle{
  opacity: 1;
}#route-steps .block-head .drag-handle:hover{
  background: var(--state-hover-bg, rgba(255,255,255,.05));
}#route-steps .block-head .drag-handle:active{
  cursor: grabbing;
}#route-steps .block-head .block-title{
  grid-area: title;
  min-width: 0;
  white-space: normal;
  overflow-wrap: anywhere;
  font-family: var(--font-ui, var(--font-sans));
  font-size: 1.06rem;
  font-weight: 700;
  line-height: 1.25;
  color: var(--text-primary);
}#route-steps .block-head .block-time{
  grid-area: time;
  justify-self: end;
  white-space: nowrap;
  text-align: right;
  display: inline-flex;
  align-items: center;
  min-height: auto;
  padding: 0;
  border-radius: 0;
  border: 0;
  background: transparent;
  color: var(--text-tertiary, var(--text-muted));
  font-size: .78rem;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}#route-steps .block-desc{
  color: var(--text-secondary);
  font-size: .92rem;
  line-height: 1.55;
  display: -webkit-box;
  -webkit-line-clamp: 6;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: 8.6em;
}#route-steps .block-actions{
  margin-top: auto;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 8px;
  padding-top: 10px;
  border-top: 1px solid var(--editorial-line, var(--line-soft));
}#route-steps .block-actions .btn{
  min-width: 0;
  padding-inline: 10px;
  white-space: nowrap;
}
#route-steps .block-actions .btn.block-action-icon-btn{
  width:30px;
  min-width:30px;
  max-width:30px;
  height:30px;
  min-height:30px;
  padding:0;
  border-radius:10px;
  font-size:0;
  line-height:0;
}
#route-steps .block-actions .btn.block-action-icon-btn .ms-action-icon-svg{
  width:14px;
  height:14px;
}
#route-steps .block-actions .btn[data-block-edit]{
  margin-left: auto;
}
#route-steps .block-actions .btn.block-route-jump{
  min-width:30px;
  width:30px;
  max-width:30px;
  height:30px;
  min-height:30px;
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:.92rem;
  line-height:1;
  border-color: var(--border-default);
  background: color-mix(in srgb, var(--surface-raised) 70%, transparent);
  color: var(--text-secondary);
}
#route-steps .block-actions .btn.block-route-jump .route-jump-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:14px;
  height:14px;
}
#route-steps .block-actions .btn.block-route-jump .route-jump-icon svg{
  width:14px;
  height:14px;
  display:block;
}
#route-steps .block-actions .btn.block-route-jump[data-jump-target="storyboards"]{
  border-color:rgba(120,164,255,.62);
  color:#d7e8ff;
}
#route-steps .block-actions .btn.block-route-jump[data-jump-target="scripts"]{
  border-color:rgba(170,206,255,.42);
  color:#d7e8ff;
}
#route-steps .block-actions .btn.block-route-jump[data-jump-target="voci"]{
  border-color:rgba(127,214,186,.56);
  color:#d4f6ea;
}
#route-steps .block-actions .btn.block-route-jump[data-jump-target="smart-task"]{
  border-color:rgba(241,191,90,.58);
  color:#ffe3ab;
}@media (max-width: 980px){
#route-steps .block-card{
    width: 100%;
    max-width: 100%;
    flex: 1 1 100%;
  }
}#route-steps .steps-episodes-label{
  margin: 0 !important;
  font-size: var(--ms-font-h2, var(--typo-heading-size, 26px)) !important;
  font-weight: var(--ms-font-weight-strong) !important;
  line-height: 1.1 !important;
  color: var(--text) !important;
}#route-steps .block-desc.is-empty{
  color: transparent !important;
}#route-steps .block-actions .btn{
  color: var(--block-fg, var(--text)) !important;
  border-color: var(--block-chip-border, var(--border-2)) !important;
  background: color-mix(in srgb, var(--block-chip-bg, rgba(255,255,255,.06)) 90%, transparent) !important;
}#route-steps .block-actions .btn.red{
  border-color: color-mix(in srgb, var(--error) 48%, var(--block-chip-border, var(--border-2))) !important;
  background: color-mix(in srgb, var(--error) 18%, var(--block-chip-bg, rgba(255,255,255,.06))) !important;
}
#route-steps .block-actions .btn.block-route-jump{
  width:30px !important;
  min-width:30px !important;
  max-width:30px !important;
  height:30px !important;
  min-height:30px !important;
  padding:0 !important;
  border-radius:999px !important;
  flex:0 0 30px !important;
  border-color: var(--border-default) !important;
  background: color-mix(in srgb, var(--surface-raised) 70%, transparent) !important;
  color: var(--text-secondary) !important;
}
#route-steps .block-actions .btn.block-route-jump[data-jump-target="storyboards"]{
  border-color:rgba(120,164,255,.62) !important;
  color: var(--text-primary) !important;
}
#route-steps .block-actions .btn.block-route-jump[data-jump-target="scripts"]{
  border-color:rgba(170,206,255,.42) !important;
  color: var(--text-primary) !important;
}
#route-steps .block-actions .btn.block-route-jump[data-jump-target="voci"]{
  border-color:rgba(127,214,186,.56) !important;
  color:#d4f6ea !important;
}
#route-steps .block-actions .btn.block-route-jump[data-jump-target="smart-task"]{
  border-color:rgba(241,191,90,.58) !important;
  color:#ffe3ab !important;
}
/* -------------------------------------------------------------------------- */
/* Legacy steps route styles migrated from:
   - assets/css/steps-card-actions.css
   - assets/css/steps-card-modal.css
   - assets/css/steps-episode-meta.css
   Kept at end to preserve previous route-level precedence.                   */
/* -------------------------------------------------------------------------- */

/* Centra i bottoni Modifica/Elimina in basso alla card */
#route-steps .block-card{
  display:flex;
  flex-direction:column;
}
#route-steps .block-actions{
  margin-top:auto;
  display:flex;
  gap:6px;
  justify-content:flex-start;
  flex-wrap:nowrap;
  overflow-x:auto;
  overflow-y:hidden;
  padding-top:8px;
}
#route-steps .block-actions .btn{
  flex:0 0 auto;
}
#route-steps .block-desc.small{
  opacity:.95;
}

/* Inline ibrido: modifica rapida direttamente in card */
#route-steps .block-card.is-inline-editing{
  border-color: var(--accent-3, var(--control)) !important;
  box-shadow:
    0 0 0 3px color-mix(in srgb, var(--accent-3, var(--control)) 22%, transparent),
    inset 0 0 0 1px color-mix(in srgb, var(--accent-3, var(--control)) 48%, transparent);
}
#route-steps .block-card.is-inline-editing .block-head{
  align-items: start;
}
#route-steps .block-card.is-inline-editing .block-time{
  min-width: 88px;
}
#route-steps .block-card .block-inline-title-input,
#route-steps .block-card .block-inline-desc-input{
  width: 100%;
  box-sizing: border-box;
}
#route-steps .block-card .block-inline-title-input{
  min-height: 32px;
  font-weight: 700;
}
#route-steps .block-card .block-inline-desc-input{
  min-height: 78px;
  resize: vertical;
}
#route-steps .block-card .block-inline-minutes-input{
  width: 84px;
  min-height: 30px;
  text-align: center;
  padding: 4px 6px;
}
#route-steps .block-card [data-block-flags].block-inline-flags{
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
#route-steps .block-card .block-inline-tag-select{
  min-height: 30px;
  padding: 0 8px;
  font-size: .78rem;
}
#route-steps .block-card.is-inline-editing .block-actions{
  justify-content: flex-end;
}
#route-steps .block-inline-beat-check{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:30px;
  padding:0 10px;
  border:1px solid var(--border-2);
  border-radius:999px;
  background:color-mix(in srgb, var(--text-primary) 4%, transparent);
  color:var(--muted);
  font-size:.78rem;
  font-weight:700;
}
#route-steps .block-inline-beat-check input{
  margin:0;
  accent-color: var(--control);
}
#route-steps .block-inline-beat-type-select:disabled{
  opacity:.65;
}

/* Steps: garantisce che ogni riga/atto contenga completamente le card */
/* "+ Nuova scena" centrata in fondo, "Nessun blocco" full-width
   (la scene-creator base ha flex:0 0 100% → override) */
#route-steps .act-body > .scene-creator-button{
  order:90;
  flex:0 0 auto !important;
  align-self:center !important;
  width:fit-content !important;
  margin-inline:auto !important;
}
#route-steps .act-body > .steps-act-empty{
  order:99;
  width:100%;
}
#route-steps .act-body > .block-card:not(.dragging):not(.sortable-chosen):not(.drag-ghost){
  position:relative !important;
  left:auto !important;
  top:auto !important;
  transform:none !important;
  margin:0 !important;
}
#route-steps .block-card{
  width:380px !important;
  flex:0 0 380px !important;
  max-width:100%;
  min-height:260px !important;
  height:260px !important;
  margin:0;
  align-self:start;
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
  position:relative !important;
}
#route-steps .block-card[hidden]{
  display:none !important;
}
#route-steps .block-desc{
  flex:1 1 auto;
  min-height:0;
  -webkit-line-clamp:5;
}
@media (max-width: 980px){
  #route-steps .act-body{
    flex-direction:column;
    flex-wrap:nowrap !important;
  }
  #route-steps .block-card{
    width:100% !important;
    flex:1 1 auto !important;
  }
}

/* Steps beat controls + visual state */
#route-steps .steps-view-switch{
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:3px;
  border:1px solid var(--editorial-line, var(--line-soft));
  border-radius:var(--radius-sm, 8px);
  background:var(--surface-raised);
}
#route-steps .steps-view-mode-btn{
  min-height:28px;
  min-width:84px;
  padding:0 12px;
}
/* segmented control: attivo = state-selected; 2 id + !important vs .btn (2,1,0) */
#workspaceMain #route-steps .steps-view-mode-btn{
  border:1px solid transparent !important;
  border-radius:var(--radius-sm, 6px) !important;
  background:transparent !important;
  color:var(--text-secondary) !important;
}
#workspaceMain #route-steps .steps-view-mode-btn:hover{
  background:var(--state-hover-bg, rgba(255,255,255,.05)) !important;
  color:var(--text-primary) !important;
}
#workspaceMain #route-steps .steps-view-mode-btn.is-active{
  background:var(--state-selected-bg) !important;
  border-color:var(--state-selected-border) !important;
  color:var(--text-primary) !important;
}
/* Beats mantiene l'identità ambra, ma solo quando attivo */
#workspaceMain #route-steps .steps-view-mode-btn[data-steps-view-mode="beats"].is-active{
  background:color-mix(in srgb, var(--warning) 18%, transparent) !important;
  border-color:color-mix(in srgb, var(--warning) 56%, transparent) !important;
  color:var(--warning) !important;
}
#route-steps .steps-only-beat-toggle{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:30px;
  padding:0 10px;
  border:1px solid var(--editorial-line, var(--line-soft));
  border-radius:var(--radius-sm, 8px);
  background:var(--surface-raised);
  color:var(--text-secondary);
  font-weight:600;
  font-size:.84rem;
}
#route-steps .steps-only-beat-toggle input{
  margin:0;
  accent-color: var(--control);
}
#route-steps .steps-only-beat-toggle input:disabled + span{
  opacity:.66;
}
#route-steps .block-flag-beat{
  order: 99;
  max-width: 100%;
  font-size: .7rem;
  line-height: 1.1;
  padding: 0 !important;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  border: 0 !important;
  background: transparent !important;
  color: var(--warning) !important;
  font-weight: 700;
}
/* card beat → filetto ambra laterale (quieto), non bordo pieno */
#route-steps .block-card.is-beat{
  border-left: 2px solid color-mix(in srgb, var(--warning) 72%, transparent) !important;
}
#route-steps .block-actions .btn[data-inline-toggle-beat="1"][aria-pressed="true"]{
  border-color:color-mix(in srgb, var(--warning) 60%, transparent) !important;
  background:color-mix(in srgb, var(--warning) 16%, transparent) !important;
  color:var(--warning) !important;
}

/* steps-card-modal.css - usa la base dei ui-dialog globali */
#route-steps .scm-backdrop.show,
.scm-backdrop.show{
  display:flex;
}

#route-steps .scm-modal,
.scm-modal{
  width:min(720px, calc(100vw - 32px));
  max-height:min(88vh, 920px);
  overflow:auto;
  padding:0;
  /* pannello (superficie/bordo/radius/ombra) → dal DS .ui-dialog */
}

#route-steps .scm-header,
.scm-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:18px 20px 14px;
  border-bottom:1px solid var(--editorial-line, var(--line-soft));
}
/* titolo modale → tipografia dal DS .ui-dialog */
#route-steps .scm-close,
.scm-close{
  width:30px;
  min-width:30px;
  height:30px;
  min-height:30px;
  padding:0;
  border-radius:9px;
  border:1px solid var(--border-subtle);
  background: var(--surface-raised);
  color: var(--text-primary);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
#route-steps .scm-close .ms-action-icon-svg,
.scm-close .ms-action-icon-svg{
  width:14px;
  height:14px;
}

#route-steps .scm-body,
.scm-body{
  padding:22px 24px 24px;
}
#route-steps .scm-row,
.scm-row{
  margin-bottom:18px;
}
#route-steps .scm-row.scm-cols,
.scm-row.scm-cols{
  gap:18px;
}
#route-steps .scm-label,
.scm-label{
  display:block;
  margin-bottom:8px;
  /* tipografia label → dal DS .ui-dialog */
}

/* Larghezza piena per input/textarea del popup */
#route-steps .scm-body .input,
#route-steps .scm-body .textarea,
#route-steps .scm-body input[type="text"],
#route-steps .scm-body input[type="number"],
#route-steps .scm-body textarea,
#route-steps .scm-body .select,
.scm-body .input,
.scm-body .textarea,
.scm-body input[type="text"],
.scm-body input[type="number"],
.scm-body textarea,
.scm-body .select{
  width:100%;
  box-sizing:border-box;
}

/* campi modale (superficie/bordo/radius/focus) → dal DS .ui-dialog */

#route-steps .scm-cols,
.scm-cols{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}
@media (max-width: 860px){
  #route-steps .scm-cols,
  .scm-cols{
    grid-template-columns:1fr;
  }
}
#route-steps .scm-check,
.scm-check{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:34px;
  font-size:.92rem;
  font-weight:600;
  color:var(--text);
}
#route-steps .scm-check input,
.scm-check input{
  margin:0;
  accent-color: var(--control);
}
#route-steps .scm-row .is-disabled,
.scm-row .is-disabled{
  opacity:.62;
}

#route-steps .scm-swatches,
.scm-swatches{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
#route-steps .scm-color-controls,
.scm-color-controls{
  display:flex;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
}
#route-steps .scm-color-controls .scm-swatches,
.scm-color-controls .scm-swatches{
  flex:1 1 auto;
}
#route-steps [data-scm-color-reset],
[data-scm-color-reset]{
  white-space:nowrap;
}
#route-steps .scm-swatch,
.scm-swatch{
  width:28px;
  height:28px;
  padding:0;
  appearance:none;
  -webkit-appearance:none;
  border-radius:8px;
  background:var(--sw);
  border:1px solid var(--border-subtle);
  cursor:pointer;
}
#route-steps .scm-swatch[aria-pressed="true"],
.scm-swatch[aria-pressed="true"]{
  outline:2px solid var(--accent);
  outline-offset:1px;
}

#route-steps .scm-actions,
.scm-actions{
  display:flex;
  gap:10px;
  justify-content:flex-end;
  margin-top:20px;
}
/* Salva = primary blu → dal DS .ui-dialog (button[type=submit]/.btn-success) */

/* steps-episode-meta.css */
#route-steps .episode-meta{
  --epmeta-max: 1200px;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  border-radius:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}
#route-steps .episode-meta .epmeta-head{
  justify-content:flex-end !important;
  align-items:center !important;
  margin:0 !important;
  min-height:30px;
}
#route-steps .episode-meta .epmeta-body{
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  margin-top:8px;
  padding:0 12px 12px;
  border:1px solid var(--border);
  border-radius:12px;
  background:var(--ms-color-surface-primary, var(--surface, #111c2c));
  transition: max-height 240ms ease, opacity 180ms ease;
}
#route-steps .episode-meta.is-open .epmeta-body{
  max-height: var(--epmeta-max);
  opacity: 1;
}
#route-steps .episode-meta .epmeta-preview{
  display: none;
}
#route-steps .episode-meta:not(.is-open) .epmeta-preview{
  display: block;
}
#route-steps .episode-meta .epmeta-preview .badge{
  margin-left: 4px;
}

#route-steps .epmeta-toggle{
  display:inline-flex;
  align-items:center;
  gap:8px;
}
#route-steps .epmeta-toggle-ico{
  display:inline-flex;
  width:14px;
  height:14px;
  flex:0 0 14px;
  align-items:center;
  justify-content:center;
  line-height:0;
}
#route-steps .epmeta-toggle-ico svg{
  width:14px;
  height:14px;
}
#route-steps .epmeta-toggle-label{
  display:inline-flex;
  align-items:center;
}

/* -------------------------------------------------------------------------- */
/* Steps Stability Hotfix (panel scroll + act rows stable)                    */
/* -------------------------------------------------------------------------- */
#route-steps :is(.panel,.route-main){
  display:block !important;
  min-height:0 !important;
  max-height:100% !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  padding:16px 16px 0 !important;   /* inset come Narrative (top + orizzontale); tab sticky risalgono a top:0 */
}
/* .acts — blocco unico consolidato (erano 3 def sovrapposte; valori = cascata vincente) */
#route-steps .acts{
  display:flex !important;
  flex-direction:column !important;
  gap:12px !important;
  align-content:start;
  flex:none !important;
  min-height:auto !important;
  overflow:visible !important;
  padding-right:0 !important;
  grid-template-rows:none !important;
}
/* act-body ora impila i gruppi-scena (separatore + lista card) */
/* .act-body — blocco unico consolidato (erano 3 def: flex-wrap, grid e flex-column;
   vinceva sempre il flex-column che impila i gruppi-scena). */
#route-steps .act-body{
  display:flex !important;
  flex-direction:column !important;
  gap:6px !important;
  align-items:start;
  align-content:start;
  width:100%;
  min-height:0 !important;
  overflow-x:hidden !important;
  overflow-y:visible !important;
  padding-bottom:6px !important;
  position:relative !important;
}
/* ogni scena: gruppo (separatore + griglia card) */
#route-steps .scene-group{
  display:block;
  width:100%;
}
/* la GRIGLIA delle card è ora dentro .scene-cards (lista Sortable per scena).
   width:100% obbligatorio: senza, auto-fill+1fr collassa a 1 traccia (360px). */
#route-steps .scene-cards{
  display:grid !important;
  width:100% !important;
  grid-template-columns:repeat(auto-fill, minmax(360px, 1fr)) !important;
  justify-content:start !important;
  align-content:start !important;
  gap:12px !important;
  min-height:90px;            /* area droppabile anche se scena vuota */
  margin-top:8px;
}
/* "+ aggiungi card" sempre in coda alla scena */
#route-steps .scene-cards > .steps-create-card-btn{
  order:99;
}
#route-steps .steps-create-card-btn{
  width:360px !important;
  max-width:360px !important;
  min-height:260px !important;
  flex:0 0 360px !important;
}
#route-steps .act-body > .block-card:not(.dragging):not(.sortable-chosen):not(.sortable-ghost):not(.drag-ghost){
  position:relative !important;
  left:auto !important;
  top:auto !important;
  transform:none !important;
  margin:0 !important;
}
#route-steps .block-card{
  width:360px !important;
  flex:0 0 360px !important;
  max-width:360px !important;
  min-height:260px !important;
  height:auto !important;
  display:flex !important;
  flex-direction:column !important;
  overflow:hidden !important;
}
#route-steps .block-desc{
  flex:1 1 auto !important;
  min-height:0 !important;
  -webkit-line-clamp:6 !important;
}
#route-steps .block-actions{
  margin-top:auto !important;
  display:flex !important;
  flex-wrap:wrap !important;
  justify-content:flex-start !important;
  align-items:center !important;
  gap:6px !important;
  overflow:visible !important;
}
#route-steps .block-actions .btn{
  flex:0 0 auto !important;
  min-width:0 !important;
}
#route-steps .block-actions .btn.block-action-icon-btn{
  width:30px !important;
  min-width:30px !important;
  max-width:30px !important;
  height:30px !important;
  min-height:30px !important;
  padding:0 !important;
  border-radius:10px !important;
  font-size:0 !important;
  line-height:0 !important;
}
#route-steps .block-actions .btn.block-action-icon-btn .ms-action-icon-svg{
  width:14px !important;
  height:14px !important;
}
#route-steps .block-actions .btn[data-block-edit]{
  margin-left:auto !important;
}
#route-steps .block-actions .btn.block-route-jump{
  width:30px !important;
  min-width:30px !important;
  max-width:30px !important;
  height:30px !important;
  min-height:30px !important;
  padding:0 !important;
}
#route-steps .block-actions .btn.block-route-jump .route-jump-icon{
  width:14px !important;
  height:14px !important;
}
#route-steps .block-actions .btn.block-route-jump .route-jump-icon svg{
  width:14px !important;
  height:14px !important;
}
#route-steps .block-card[hidden]{
  display:none !important;
}
@media (max-width: 980px){
  #route-steps .act-body{
    flex-wrap:wrap !important;
  }
  #route-steps .block-card{
    width:100% !important;
    flex:1 1 100% !important;
    max-width:100% !important;
  }
  #route-steps .steps-create-card-btn{
    width:100% !important;
    max-width:100% !important;
    flex:1 1 100% !important;
  }
}

/* -------------------------------------------------------------------------- */
/* Steps Layout refresh: no local sidebar + episodes tabs in panel            */
/* -------------------------------------------------------------------------- */
#route-steps.steps-no-local-sidebar :is(.two-pane,.route-body){
  grid-template-columns:minmax(0, 1fr) !important;
}
#route-steps.steps-no-local-sidebar :is(.two-pane,.route-body) > .sidebar{
  display:none !important;
}
#route-steps.steps-no-local-sidebar :is(.two-pane,.route-body) > :is(.panel,.route-main){
  grid-column:1 / -1;
  min-width:0;
  width:100%;
}
#route-steps .steps-panel-topbar{
  display:none !important;
}
#route-steps .steps-episodes-tabs{
  display:flex;
  align-items:center;
  gap:8px;
  position:sticky;
  top:0;
  z-index:220;
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-gutter:stable;
  /* esce dal padding del panel (16px su tutti i lati) → barra full-bleed che
     maschera completamente gli atti durante lo scroll; sfondo opaco + ombra di taglio */
  margin:-16px -16px 10px;
  padding:14px 16px 8px;
  background:var(--ms-app-sidebar-bg, var(--surface-panel));
  border-bottom:1px solid color-mix(in srgb, var(--border) 76%, black 24%);
  box-shadow:0 8px 14px -6px rgba(0,0,0,.55);
}
#route-steps .steps-episodes-tabs::-webkit-scrollbar{
  height:7px;
}
#route-steps .steps-episodes-tabs::-webkit-scrollbar-track{
  background: color-mix(in srgb, var(--surface-raised) 60%, transparent);
  border-radius:999px;
}
#route-steps .steps-episodes-tabs::-webkit-scrollbar-thumb{
  background:color-mix(in srgb, var(--accent) 38%, transparent);
  border-radius:999px;
}
/* Tab episodi = STESSO stile dei tab principali Narrative (state-selected).
   2 id + !important per battere la globale .btn di unified-pass (2,1,0). */
#workspaceMain #route-steps .steps-episode-tab{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:30px;
  max-width:none;
  flex:0 0 auto;
  padding:0 14px;
  border:1px solid transparent !important;
  border-radius:var(--radius-sm, 8px) !important;
  background:transparent !important;
  color:var(--text-secondary) !important;
  font-family:var(--font-ui, var(--font-sans));
  font-size:var(--type-label-size, 13px);
  font-weight:var(--type-label-weight, 500);
  white-space:nowrap;
  box-shadow:none !important;
  transition:background-color .16s ease, border-color .16s ease, color .16s ease;
}
#workspaceMain #route-steps .steps-episode-tab:hover{
  background:var(--state-hover-bg, var(--surface-raised)) !important;
  color:var(--text-primary) !important;
}
#workspaceMain #route-steps .steps-episode-tab.is-active{
  background:var(--state-selected-bg) !important;
  border-color:var(--state-selected-border) !important;
  color:var(--text-primary) !important;
}
#route-steps .steps-episode-tab-title{
  display:inline-flex;
  align-items:center;
  overflow:visible;
  white-space:nowrap;
}
#route-steps .steps-episode-tab-count{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  border:0;
  background:transparent;
  color:var(--text-tertiary, var(--text-muted));
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.02em;
}
#route-steps .steps-episode-tab-menu{
  width:20px;
  min-width:20px;
  height:20px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:.92rem;
  line-height:1;
  color:inherit;
  border:1px solid transparent;
  opacity:.9;
}
#route-steps .steps-episode-tab:hover .steps-episode-tab-menu{
  border-color:color-mix(in srgb, var(--tab-border, rgba(120,150,204,.45)) 78%, transparent 22%);
  background:color-mix(in srgb, var(--tab-hover-bg, rgba(26,41,64,.28)) 38%, transparent 62%);
}
#route-steps .steps-episode-tab.is-active .steps-episode-tab-menu{
  border-color:color-mix(in srgb, var(--state-selected-border, #78a4ff) 56%, transparent 44%);
}
#route-steps .steps-episode-add-btn{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:32px;
  min-height:32px;
  padding:0 14px 0 11px;
  border-radius:var(--radius-sm, 8px);
  border:1px dashed color-mix(in srgb, var(--accent) 50%, var(--border-default));
  background: color-mix(in srgb, var(--accent) 12%, transparent);
  color: var(--accent);
  font-family: var(--font-sans);
  font-size:.8rem;
  font-weight:600;
  letter-spacing:.01em;
  line-height:1;
  cursor:pointer;
  transition: background 140ms ease, border-color 140ms ease, color 140ms ease;
}
#route-steps .steps-episode-add-btn svg{ flex:0 0 auto; }
#route-steps .steps-episode-add-label{ white-space:nowrap; }
#route-steps .steps-episode-add-btn:hover{
  border-style:solid;
  border-color:var(--accent);
  background:color-mix(in srgb, var(--accent) 20%, transparent);
  color:var(--accent);
}
/* solo posizionamento (JS setta left/top); aspetto dal componente DS .ds-menu */
#route-steps .steps-episode-actions-popup{
  position:fixed;
  top:0;
  left:0;
  z-index:1400;
}
#route-steps .steps-episode-actions-popup[hidden]{
  display:none !important;
}

/* dot di stato nel pill del tab episodio */
/* il pallino di stato usa il componente DS .ds-status-dot (vedi design-system.css);
   .steps-episode-tab-dot resta come hook per il selettore JS */
#route-steps .steps-episode-title-row{
  row-gap:8px;
}
#route-steps .steps-episode-complete{
  display:inline-flex;
  align-items:center;
  gap:8px;
}
#route-steps .steps-status-control{
  position:relative;
  min-width:184px;
  z-index:30;
}
#route-steps .steps-status-native-select{
  position:absolute;
  inset:0;
  width:1px;
  height:1px;
  opacity:0;
  pointer-events:none;
}
/* trigger/hover/is-open → dal componente DS .ds-dropdown__trigger */
#route-steps .steps-status-control-dot{
  width:10px;
  height:10px;
  border-radius:999px;
  border:1px solid rgba(153,176,215,.92);
  background:transparent;
  box-shadow:0 0 0 1px rgba(26,40,62,.66) inset;
  flex:0 0 auto;
}
/* caret/menu/option(+hover) → dal componente DS .ds-dropdown.
   Stato selezionato: il JS usa .is-active oltre ad aria-selected → mappo a state-selected */
#route-steps .steps-status-control-option.is-active{
  background:var(--state-selected-bg) !important;
  border-color:var(--state-selected-border) !important;
  color:var(--text-primary) !important;
}
#route-steps .steps-status-option-dot{
  width:10px;
  height:10px;
  border-radius:999px;
  border:1px solid rgba(153,176,215,.92);
  background:transparent;
  box-shadow:0 0 0 1px rgba(26,40,62,.66) inset;
  flex:0 0 auto;
}
/* pallini-stato sui token: wip = ambra (--warning), done = verde salvia (--success) */
#route-steps .steps-status-control-option[data-status-option="wip"] .steps-status-option-dot,
#route-steps .steps-status-control[data-status-tone="wip"] .steps-status-control-dot{
  border-color:var(--warning);
  background:var(--warning);
}
#route-steps .steps-status-control-option[data-status-option="done"] .steps-status-option-dot,
#route-steps .steps-status-control[data-status-tone="done"] .steps-status-control-dot{
  border-color:var(--success);
  background:var(--success);
}

/* Steps status control: remove shadow (requested visual cleanup) */
#route-steps .steps-status-control-toggle,
#route-steps .steps-status-control.is-open .steps-status-control-toggle,
#route-steps .steps-status-control[data-status-tone="wip"] .steps-status-control-toggle,
#route-steps .steps-status-control[data-status-tone="done"] .steps-status-control-toggle,
#route-steps .steps-status-control-menu{
  box-shadow:none !important;
}


/* ══════════════════════════════════════════════════════════════════
   RAIL STRUMENTI (destra) — INTEGRATO nel layout come Storyboard (non flottante).
   Rail a filo del bordo a tutta altezza; il board riserva spazio via
   --steps-tools-space (solo rail; rail+pannello quando aperto).
   ══════════════════════════════════════════════════════════════════ */
#route-steps{
  --steps-rail-w:46px;
  --steps-panel-w:min(360px, 34vw);
  --steps-tools-space:var(--steps-rail-w);
}
/* solo il dock DESTRA riserva la larghezza del pannello (gli sta accanto);
   bottom/floating sovrappongono il board → spazio = solo rail */
#route-steps.is-steps-tools-dock-right.is-steps-tools-panel-open{
  --steps-tools-space:calc(var(--steps-panel-w) + var(--steps-rail-w));
}
/* il board non scorre sotto rail/pannello */
#route-steps :is(.two-pane,.route-body){
  margin-right:var(--steps-tools-space);
  transition:margin-right .18s ease;
}
#route-steps .steps-tools-rail{
  position:absolute;                      /* ancorato alla route-card */
  top:var(--route-action-bar-h, 46px);   /* parte sotto l'action bar */
  bottom:0;
  right:0;
  z-index:60;
  width:var(--steps-rail-w);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:6px;
  padding:8px 5px;
  border-left:1px solid var(--editorial-line, var(--line-soft));
  background:var(--ms-app-sidebar-bg, var(--surface-panel));   /* = colore sidebar globale */
  transition:right .18s ease;
}
/* rail si sposta a sinistra SOLO col dock destra (il panel gli sta accanto);
   con bottom/floating il panel non occupa la colonna destra → rail resta a filo */
#route-steps.is-steps-tools-dock-right.is-steps-tools-panel-open .steps-tools-rail{
  right:var(--steps-panel-w);
}
#route-steps .steps-tool-btn{
  width:34px; height:34px;
  display:inline-flex; align-items:center; justify-content:center;
  padding:0;
  border:1px solid transparent;
  border-radius:var(--radius-sm, 8px);
  background:transparent;
  color:var(--text-secondary);
  cursor:pointer;
  transition:background-color .16s ease, border-color .16s ease, color .16s ease;
}
#route-steps .steps-tool-btn svg{
  width:17px; height:17px;
}
#route-steps .steps-tool-btn:hover{
  background:var(--state-hover-bg, rgba(255,255,255,.05));
  color:var(--text-primary);
}
#route-steps .steps-tool-btn.is-active{
  background:var(--state-selected-bg);
  border-color:var(--state-selected-border);
  color:var(--text-primary);
}

#route-steps .steps-tools-panel{
  position:absolute;                      /* ancorato alla route-card (no gap topbar) */
  z-index:55;
  display:flex;
  flex-direction:column;
  background:var(--ms-app-sidebar-bg, var(--surface-panel));
  border:1px solid var(--editorial-line, var(--line-soft));
  box-shadow:none;
}
#route-steps .steps-tools-panel[hidden]{ display:none !important; }

/* collassato col dock destra: l'header sta in alto, niente full-height */
#route-steps .steps-tools-panel.is-collapsed[data-ms-dock="right"]{
  bottom:auto !important;
}
/* ── Dock: DESTRA (default) ── */
#route-steps .steps-tools-panel[data-ms-dock="right"]{
  top:var(--route-action-bar-h, 46px); bottom:0; right:0; left:auto;
  width:var(--ms-dock-panel-width, var(--steps-panel-w));
  height:auto;
  border-width:0 0 0 1px;
  border-radius:0;
}
/* ── Dock: BASSO ── */
#route-steps .steps-tools-panel[data-ms-dock="bottom"]{
  left:0; right:var(--steps-rail-w); bottom:0; top:auto;
  width:auto;
  height:min(var(--ms-dock-panel-height, 380px), 70%);
  border-width:1px 0 0 0;
  border-radius:var(--radius-md, 12px) var(--radius-md, 12px) 0 0;
  z-index:58;
}
/* ── Dock: FLOTTANTE ── */
#route-steps .steps-tools-panel[data-ms-dock="floating"],
#route-steps .steps-tools-panel.ms-floating-panel{
  top:calc(var(--route-action-bar-h, 46px) + 14px); bottom:auto; left:auto;
  right:calc(var(--steps-rail-w) + 14px);
  width:var(--ms-dock-panel-width, var(--steps-panel-w));
  height:var(--ms-dock-panel-height, 380px);
  border-width:1px;
  border-radius:var(--radius-lg, 12px);
  box-shadow:0 18px 48px rgba(0,0,0,.46);
  z-index:80;
}
#route-steps .steps-tools-panel-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:16px 18px 12px;
  border-bottom:1px solid var(--editorial-line, var(--line-soft));
}
#route-steps .steps-tools-panel-title{
  font-family:var(--font-ui, var(--font-sans));
  font-weight:600;
  font-size:.82rem;
  color:var(--text-primary);
}
#route-steps .steps-tools-panel-close{
  width:32px; height:32px;
  display:inline-flex; align-items:center; justify-content:center;
  padding:0;
  border:1px solid transparent;
  border-radius:var(--radius-sm, 8px);
  background:transparent;
  color:var(--text-secondary);
  cursor:pointer;
}
#route-steps .steps-tools-panel-close:hover{
  background:var(--state-hover-bg, rgba(255,255,255,.06));
  color:var(--text-primary);
}
#route-steps .steps-tools-panel-close .ms-action-icon-svg{
  width:var(--icon-size-md, 16px); height:var(--icon-size-md, 16px);
  stroke:currentColor; fill:none;
}
#route-steps .steps-tools-panel-body{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  padding:16px 18px 20px;
}
#route-steps .steps-tool-section[hidden]{ display:none; }
#route-steps .steps-tool-placeholder{
  margin:0;
  color:var(--text-tertiary, var(--text-muted));
  font-size:.9rem;
  line-height:1.55;
}


/* Form dentro i pannelli del rail (es. Metadata) */
#route-steps .steps-tool-form{
  display:flex;
  flex-direction:column;
  gap:14px;
}
#route-steps .steps-tool-form .field{
  display:flex;
  flex-direction:column;
  gap:6px;
}
#route-steps .steps-tool-form .label{
  font-family:var(--font-ui, var(--font-sans));
  font-size:.82rem;
  font-weight:500;
  color:var(--text-secondary);
}
#route-steps .steps-tool-form :is(.input, .textarea){
  width:100%;
  background:var(--bg-input, var(--surface-input)) !important;
  color:var(--text-primary) !important;
  border:1px solid var(--border-default) !important;
  border-radius:var(--radius-sm, 8px) !important;
  box-shadow:none !important;
  font-size:.92rem;
}
#route-steps .steps-tool-form .input{ height:40px; padding:0 12px !important; }
#route-steps .steps-tool-form .textarea{ padding:10px 12px !important; min-height:96px; resize:vertical; line-height:1.5; }
#route-steps .steps-tool-form :is(.input, .textarea):focus{
  border-color:var(--control) !important;
  outline:0 !important;
}
#route-steps .steps-tool-hint{
  margin:2px 0 0;
  font-size:.76rem;
  color:var(--text-tertiary, var(--text-muted));
}


/* (Deck outline rimosso — il Deck è la Story Deck: step-story-deck.css) */


/* Rail: separatore tra azioni e pannelli */
#route-steps .steps-tools-rail-sep{
  width:24px; height:1px; flex:0 0 auto;
  margin:4px 0;
  background:var(--editorial-line, var(--line-soft));
}
/* Azioni testuali del rail (+A, +TS) */
#route-steps .steps-rail-text span{
  font-family:var(--font-ui, var(--font-sans));
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.01em;
  line-height:1;
}
/* Toolbar in alto nascosta: le sue azioni vivono ora nel rail (proxy) */
#route-steps .board-head{ display:none !important; }


/* Durata episodio: spostata nel pill del tab attivo (niente pill standalone con label) */
#route-steps #episodeDuration{ display:none !important; }
#route-steps .steps-episode-tab-duration{
  color:var(--text-tertiary, var(--text-muted));
  font-size:.72rem;
  font-weight:600;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}
#route-steps .steps-episode-tab-duration::before{
  content:"·";
  margin:0 5px 0 3px;
  opacity:.55;
}


/* Icone azioni atto VISIBILI: 2 id per battere la globale .btn (2,1,0) di
   unified-pass che forzava sfondo trasparente → rendevano le icone invisibili */
#workspaceMain #route-steps .act-actions .act-action-icon-btn{
  background:var(--surface-raised) !important;
  border:1px solid var(--editorial-line, var(--line-soft)) !important;
  color:var(--text-secondary) !important;
}
#workspaceMain #route-steps .act-actions .act-action-icon-btn:hover{
  background:var(--state-hover-bg, var(--surface-raised)) !important;
  border-color:var(--border-strong) !important;
  color:var(--text-primary) !important;
}
#workspaceMain #route-steps .act-actions .act-action-icon-btn[data-act-action="delete"]:hover{
  background:color-mix(in srgb, var(--error) 16%, transparent) !important;
  border-color:color-mix(in srgb, var(--error) 40%, transparent) !important;
  color:var(--error) !important;
}


/* FIX: l'svg azione atto collassava in larghezza (flex-shrink nel bottone flex)
   → width 2px. Forzo dimensione e niente shrink. */
#workspaceMain #route-steps .act-actions .act-action-icon-btn .ms-action-icon-svg{
  width:16px !important;
  height:16px !important;
  min-width:16px !important;
  flex:0 0 auto !important;
}


/* Ogni atto = pannello sottile uniforme (lieve lift + hairline), per staccarli
   tutti allo stesso modo. Le card (surface-raised) dentro restano più chiare. */
#route-steps #acts > .act-col{
  padding:14px 16px !important;
  border:1px solid var(--border-subtle) !important;
  border-radius:var(--radius-md, 12px) !important;
  /* pannello recesso più scuro del fondo board → le card surface-raised spiccano.
     !important per battere unified-pass:7271 (surface-panel 88%). */
  background:var(--ms-app-sidebar-bg, var(--surface-panel)) !important;   /* = colore sidebar globale */
  box-shadow:none !important;
}


/* Con grid minmax(360,1fr): le card riempiono la traccia (uniformi) invece di
   restare a 360 fisse (che lascerebbe spazi irregolari + full-row non al bordo) */
#workspaceMain #route-steps .scene-cards > .block-card,
#workspaceMain #route-steps .scene-cards > .steps-create-card-btn{
  width:auto !important;
  max-width:none !important;
  flex:initial !important;
}


/* ── Drag & drop: placeholder = slot chiaro, non copia piena della card ──
   Risolve la confusione "appare la stessa card già posizionata". */
#route-steps .block-card.drag-ghost,
#route-steps .block-card.sortable-ghost{
  opacity:1 !important;
  background:color-mix(in srgb, var(--accent) 12%, transparent) !important;
  border:2px dashed var(--accent) !important;
  box-shadow:none !important;
}
/* nasconde il contenuto del segnaposto → resta solo lo slot di rilascio */
#route-steps .block-card.drag-ghost > *,
#route-steps .block-card.sortable-ghost > *{
  visibility:hidden !important;
}
/* la card che stai trascinando (clone che segue il cursore): ben visibile */
#route-steps .block-card.sortable-drag,
#route-steps .block-card.dragging{
  opacity:1 !important;
  box-shadow:0 18px 40px rgba(0,0,0,.5) !important;
}

/* ── Steps: navigazione episodi spostata nell'ACTION BAR (+Episodio primo, poi pill) ── */
#route-steps .route-action-bar-start{ flex:1 1 auto; min-width:0; overflow:visible; }
/* il popup azioni episodio (position:fixed) non deve essere clippato dall'action bar */
#route-steps .route-action-bar{ overflow:visible; }
/* 2 id + 4 classi per battere la regola maschera di workspace-system (2,3,0)!important */
#workspaceMain.workspace-main #route-steps.route-page .route-action-bar .steps-episodes-tabs{
  position:static !important;
  margin:0 !important;
  padding:0 !important;
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  width:100% !important;
}
#route-steps .route-action-bar .steps-episodes-tabs{ gap:8px; }
#route-steps .route-action-bar .steps-episodes-tabs #epCreate{ order:-1; margin-right:2px; }

/* tab episodi nell'action bar: scrollbar NASCOSTA (overlay macOS si espandeva su hover);
   i pill scorrono comunque con trackpad/rotella */
#route-steps .route-action-bar .steps-episodes-tabs{
  overflow-x:auto !important; overflow-y:hidden !important;
  scrollbar-gutter:auto !important;
  scrollbar-width:none !important;          /* Firefox */
  align-items:center;
}
/* lo slot e la barra non devono avere scrollbar propri (evita la doppia) */
#route-steps .route-action-bar,
#route-steps .route-action-bar-start,
#route-steps .route-action-bar-center,
#route-steps .route-action-bar-end{ overflow:visible !important; }
:is([data-theme-resolved="dark"], body.theme-dark, html) #route-steps .route-action-bar .steps-episodes-tabs::-webkit-scrollbar{
  width:0 !important; height:0 !important; display:none !important;   /* WebKit: nascondi */
}
