/* ============================================================
   ASTRA GENESIS, 17-research.css
   v0.74.0, écran RECHERCHE refondu (plaquette visuelle). Cadre commun
   Quêtes/Expéditions (.qx-wrap, .qx-head, .qx-card, bouton héros,
   css/11-quests.css) ; ce fichier ne porte que la grille de l'écran et
   ses composants propres. Modales (comparaison des doctrines, Vue
   d'ensemble) : css/design-system.css, section "RECHERCHE : modales".
   Charte formulaires (CLAUDE.md) : fond #121C2B, bordure #1E2E40,
   focus teal, arrondi 8-10, chiffres en JetBrains Mono.
   ============================================================ */

/* ---------- grille : gauche | centre | droite, doctrine en rangée basse ---------- */
.rs-body{
  position:relative;z-index:20;flex:1 1 auto;min-height:0;
  display:grid;grid-template-columns:var(--qx-left-w) minmax(0,1fr) var(--qx-right-w);
  grid-template-rows:minmax(0,1fr) auto;gap:var(--qx-gap);
}
.rs-col-left{grid-column:1;grid-row:1 / span 2;}
.rs-center{grid-column:2;grid-row:1;min-width:0;min-height:0;display:flex;flex-direction:column;gap:var(--qx-gap);}
/* colonne droite : le panneau Détails EST la zone flexible, son contenu
   défile et le bouton d'action reste en pied (.rs-dt-foot) */
.rs-col-right{grid-column:3;grid-row:1;overflow:hidden;}
#rs-panel-detail{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}
#rs-panel-detail.collapsed{flex:0 0 auto;}
#rs-panel-detail > .panel-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}
.rs-doctrine-panel{grid-column:2 / span 2;grid-row:2;}
.screen.rs-screen [data-rs-key]:focus-visible{outline:2px solid #2DD4BF;outline-offset:2px;}

/* ---------- colonne gauche ---------- */
.rs-colony-list{display:flex;flex-direction:column;gap:4px;}
.rs-colony{
  display:flex;align-items:center;gap:8px;min-width:0;padding:6px 8px;border-radius:8px;
  border:1px solid transparent;cursor:pointer;transition:background .15s, border-color .15s;
}
.rs-colony:hover{background:rgba(255,255,255,.04);border-color:#1E2E40;}
.rs-colony.sel{border-color:rgba(245,158,11,.7);background:rgba(245,158,11,.07);}
.rs-colony-dot{flex:none;width:8px;height:8px;border-radius:50%;background:rgba(148,163,184,.4);}
.rs-colony-dot.on{background:var(--cyan);box-shadow:0 0 8px var(--cyan);}
.rs-colony-dot.busy{background:var(--amber);box-shadow:0 0 8px var(--amber);}
.rs-colony-txt{display:flex;flex-direction:column;min-width:0;}
.rs-colony-txt b{font-family:var(--font-head);font-size:.78rem;font-weight:600;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rs-colony-txt small{font-size:.64rem;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rs-colony.off .rs-colony-txt b{color:var(--ink-2);}

.rs-tech-ic{
  flex:none;width:28px;height:28px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;
  color:var(--rs-cat);background:color-mix(in srgb, var(--rs-cat) 16%, transparent);
  border:1px solid color-mix(in srgb, var(--rs-cat) 40%, transparent);
}
.rs-tech-ic svg{width:15px;height:15px;}
.rs-active{display:flex;align-items:center;gap:10px;min-width:0;cursor:pointer;border-radius:8px;padding:2px;}
.rs-active:hover .rs-active-name{color:var(--amber);}
.rs-active .rs-tech-ic{width:38px;height:38px;border-radius:10px;}
.rs-active .rs-tech-ic svg{width:20px;height:20px;}
.rs-active-meta{display:flex;flex-direction:column;gap:2px;min-width:0;}
.rs-active-name{font-family:var(--font-head);font-size:.84rem;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .15s;}
.rs-active-sub{font-size:.64rem;color:var(--ink-2);display:flex;align-items:center;gap:4px;min-width:0;white-space:nowrap;}
.rs-progress{margin-top:6px;}
.rs-progress .bar{height:5px;}
.rs-progress .bar i{background:var(--amber);}
.rs-progress-row{display:flex;justify-content:space-between;gap:8px;margin-top:4px;font-family:var(--font-mono);font-size:.64rem;color:var(--ink-2);}
#rs-active .rs-progress .bar i{background:linear-gradient(90deg, #2DD4BF, #38BDF8);}
.rs-sci-line{display:flex;justify-content:space-between;flex-wrap:wrap;gap:2px 8px;margin-top:8px;font-family:var(--font-mono);font-size:.62rem;color:var(--ink-2);}
.rs-sci-line > span:first-child{color:var(--cyan);cursor:help;}

.rs-queue-list{display:flex;flex-direction:column;}
.rs-queue-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed rgba(255,255,255,.06);min-width:0;}
.rs-queue-row:last-child{border-bottom:0;}
.rs-queue-pos{
  flex:none;width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:.66rem;color:var(--violet);border:1px solid rgba(167,139,250,.4);
}
.rs-queue-lab{flex:1;min-width:0;display:flex;flex-direction:column;cursor:pointer;}
.rs-queue-lab b{font-size:.74rem;font-weight:600;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rs-queue-lab:hover b{color:var(--amber);}
.rs-queue-lab small{font-size:.6rem;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rs-queue-note{margin-top:6px;font-style:italic;}

.rs-stat b{font-family:var(--font-mono);font-weight:500;color:var(--ink-1);}
.rs-overview-btn{width:100%;justify-content:center;margin-top:8px;letter-spacing:.08em;text-transform:uppercase;}
.rs-foot-quote{
  flex:none;margin:auto 0 0;padding:6px 4px 2px 10px;border-left:2px solid var(--amber);
}
.rs-foot-quote blockquote{margin:0;font-size:.7rem;line-height:1.45;font-style:italic;color:var(--ink-1);text-shadow:0 1px 8px rgba(4,10,18,.9);}
.rs-foot-quote figcaption{margin-top:3px;font-family:var(--font-mono);font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);}
.rs-foot-quote figcaption::before{content:"- ";}

/* ---------- 5.1 cartes de branche ---------- */
.rs-branches{flex:none;display:grid;grid-template-columns:repeat(8, minmax(0,1fr));gap:calc(8px*var(--scale));}
.rs-branch{
  --rs-cat:var(--ink-3);
  position:relative;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px;
  padding:calc(8px*var(--scale)) calc(10px*var(--scale)) calc(7px*var(--scale));text-align:left;
  font:inherit;color:var(--ink-1);cursor:pointer;border-radius:10px;
  border:1px solid var(--glass-border);border-top:3px solid var(--rs-cat);
  background:
    linear-gradient(160deg, color-mix(in srgb, var(--rs-cat) 26%, transparent) 0%, transparent 72%),
    var(--qx-glass);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
  transition:border-color .15s, box-shadow .15s, transform .15s;
}
.rs-branch:hover{transform:translateY(-2px);border-color:color-mix(in srgb, var(--rs-cat) 70%, transparent);}
.rs-branch.sel{box-shadow:0 0 0 2px #F59E0B, 0 0 18px rgba(245,158,11,.35);}
.rs-branch:focus-visible{outline:2px solid #2DD4BF;outline-offset:2px;}
.rs-branch-ic{width:22px;height:22px;color:var(--rs-cat);}
.rs-branch-ic svg{width:100%;height:100%;}
.rs-branch-name{
  font-family:var(--font-head);font-weight:600;font-size:.7rem;line-height:1.2;letter-spacing:.04em;text-transform:uppercase;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.4em;
}
.rs-branch-n{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.62rem;color:var(--ink-2);}
.rs-branch-run{width:7px;height:7px;border-radius:50%;background:var(--amber);box-shadow:0 0 6px var(--amber);animation:rsRunPulse 1.8s ease-in-out infinite;}
@keyframes rsRunPulse{0%,100%{opacity:1;}50%{opacity:.35;}}

/* ---------- 5.2 en-tête de branche + panneau de l'arbre ---------- */
.rs-tree-panel{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;}
.qx-card .panel-head.rs-branch-head{padding:calc(8px*var(--scale)) calc(14px*var(--scale));border-bottom:1px solid var(--glass-border);}
.rs-bh{flex:1;min-width:0;display:flex;align-items:center;gap:12px;}
.rs-bh-ic{flex:none;width:30px;height:30px;color:var(--rs-cat);}
.rs-bh-ic svg{width:100%;height:100%;}
.rs-bh-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.rs-bh-txt b{font-family:var(--font-display);font-size:.9rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rs-bh-txt small{font-family:var(--font-body);font-size:.72rem;letter-spacing:0;text-transform:none;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rs-bh-count{flex:none;display:flex;flex-direction:column;align-items:flex-end;padding-left:12px;border-left:1px solid var(--glass-border);}
.rs-bh-count b{font-family:var(--font-mono);font-size:.84rem;font-weight:500;color:var(--ink-1);}
.rs-bh-count small{font-size:.58rem;letter-spacing:.04em;text-transform:none;color:var(--ink-2);}
.qx-card .rs-tree-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:calc(10px*var(--scale)) calc(14px*var(--scale));}

/* ---------- 5.3 arbre en rangées de tier, zigzag ---------- */
.rs-tree{
  --rs-cat:var(--cyan);
  position:relative;max-width:1200px;margin:0 auto;
  display:grid;grid-template-columns:auto minmax(0,1fr) 44px minmax(0,1fr);
  grid-auto-rows:auto;align-items:stretch;
}
.rs-defs{position:absolute;width:0;height:0;overflow:hidden;}
.rs-ah{fill:rgba(148,163,184,.55);}
.rs-ah.on{fill:var(--rs-cat);}
.rs-tier-lbl{
  grid-column:1;align-self:center;display:flex;flex-direction:column;gap:2px;
  padding:0 14px 0 2px;margin-right:10px;border-right:1px solid rgba(148,163,184,.2);min-width:64px;
}
.rs-tier-lbl b{font-family:var(--font-display);font-size:.72rem;letter-spacing:.12em;color:var(--ink-1);white-space:nowrap;}
.rs-tier-lbl small{font-family:var(--font-mono);font-size:.58rem;color:var(--ink-2);white-space:nowrap;}
.rs-cell{min-width:0;display:flex;}
.rs-cell > .rs-tcard{flex:1;}
.rs-cell-arrow{align-items:center;}
.rs-cell-down{justify-content:center;height:26px;}
.rs-arrow{display:block;overflow:visible;}
.rs-arrow.h{width:100%;height:14px;padding:0 4px;box-sizing:border-box;}
.rs-arrow.v{width:14px;height:100%;}
.rs-arrow line{stroke:rgba(148,163,184,.45);stroke-width:1.5;stroke-dasharray:4 3;}
.rs-arrow.on line{stroke:var(--rs-cat);stroke-dasharray:none;}

.rs-tcard{
  position:relative;min-width:0;display:flex;flex-direction:column;gap:4px;
  padding:calc(8px*var(--scale)) calc(10px*var(--scale));border-radius:10px;cursor:pointer;
  background:rgba(8,14,24,.72);border:1px solid #1E2E40;
  transition:border-color .15s, box-shadow .15s, opacity .15s;
}
.rs-tcard:hover{border-color:color-mix(in srgb, var(--rs-cat) 70%, transparent);}
.rs-tcard.st-available{border-color:color-mix(in srgb, var(--rs-cat) 45%, transparent);}
.rs-tcard.st-done{border-color:rgba(45,212,191,.4);background:rgba(20,184,166,.06);}
.rs-tcard.st-active{border-color:rgba(245,158,11,.6);}
.rs-tcard.st-queued{border-color:rgba(167,139,250,.5);}
.rs-tcard.st-locked{opacity:.62;}
.rs-tcard.st-locked:hover{opacity:.85;}
.rs-tcard.sel{opacity:1;border-color:#F59E0B;box-shadow:0 0 0 1px #F59E0B, 0 0 18px rgba(245,158,11,.3);}
.rs-tcard-head{display:flex;align-items:center;gap:8px;min-width:0;}
.rs-tcard-name{flex:1;min-width:0;font-family:var(--font-head);font-weight:600;font-size:.8rem;color:var(--ink-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rs-tcard-fx{font-size:.7rem;color:color-mix(in srgb, var(--rs-cat) 75%, #fff);}
.rs-tier-badge{
  flex:none;font-family:var(--font-mono);font-size:.58rem;letter-spacing:.06em;padding:1px 6px;border-radius:6px;
  color:var(--ink-2);border:1px solid rgba(148,163,184,.35);white-space:nowrap;
}
.rs-tier-badge.sm{font-size:.54rem;padding:0 4px;}
.rs-tier-badge:empty{display:none;}
.qx-card .panel-head .rs-tier-badge{margin-left:auto;color:var(--cyan);border-color:rgba(45,212,191,.45);text-transform:uppercase;}
.qx-card .panel-head .rs-tier-badge + .panel-collapse{margin-left:6px;}

.rs-st{display:flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:.62rem;color:var(--ink-2);min-width:0;}
.rs-st svg{width:11px;height:11px;flex:none;}
.rs-st.done{color:var(--cyan);}
.rs-st.ok{color:var(--lime);}
.rs-st.on{color:var(--amber);}
.rs-st.q{color:var(--violet);}
.rs-st.lock{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;}
.rs-st.lock svg{vertical-align:-1px;margin-right:4px;}
.rs-tcard .rs-progress{margin-top:0;}
.rs-tcard.st-queued .rs-progress .bar i{background:var(--violet);}

.rs-chips{display:flex;flex-wrap:wrap;gap:4px;min-width:0;}
.rs-link{
  font-family:var(--font-mono);font-size:.58rem;padding:1px 6px;border-radius:6px;min-width:0;
  color:var(--ink-2);border:1px dashed rgba(148,163,184,.35);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;
}
.rs-cost-chip{
  display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:8px;
  font-family:var(--font-mono);font-size:.62rem;color:#E6EDF5;background:#121C2B;border:1px solid #1E2E40;cursor:help;
}
.rs-cost-chip svg{width:11px;height:11px;color:var(--cyan);flex:none;}
.rs-cost-chip b{font-weight:500;}
.rs-cost-chip.ko{color:#FCA5A5;border-color:rgba(239,68,68,.45);}
.rs-cost-chip.ko svg{color:#F87171;}
.rs-tree .rs-cost-n{display:none;}
.rs-cost-n{color:var(--ink-2);}

/* ---------- 6. détails technologie ---------- */
.rs-dt{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;min-width:0;}
.rs-dt-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;}
.rs-dt-scroll > *{flex-shrink:0;}
.rs-dt-foot{flex:none;padding-top:2px;}
.rs-dt-hero{
  position:relative;height:calc(84px*var(--scale));border-radius:10px;overflow:hidden;
  display:flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb, var(--rs-cat) 35%, transparent);
  background:
    radial-gradient(ellipse at 50% 45%, color-mix(in srgb, var(--rs-cat) 32%, transparent), transparent 70%),
    linear-gradient(160deg, color-mix(in srgb, var(--rs-cat) 18%, transparent), rgba(8,14,24,.9));
}
.rs-dt-ic{width:44px;height:44px;color:var(--rs-cat);filter:drop-shadow(0 0 10px color-mix(in srgb, var(--rs-cat) 60%, transparent));}
.rs-dt-ic svg{width:100%;height:100%;}
.rs-dt-branch{position:absolute;left:10px;bottom:6px;font-family:var(--font-mono);font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);}
.rs-dt-name{margin:10px 0 2px;font-family:var(--font-head);font-weight:700;font-size:1.02rem;color:var(--ink-1);}
.rs-dt-desc{margin:0;font-size:.72rem;line-height:1.45;color:var(--ink-2);}
.rs-dt-sect{margin:10px 0 4px;font-family:var(--font-mono);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);}
.rs-dt-fx{
  display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 8px;border-radius:8px;
  background:#121C2B;border:1px solid #1E2E40;font-size:.72rem;color:var(--ink-1);
}
.rs-dt-fx span{display:inline-flex;align-items:center;gap:6px;min-width:0;}
.rs-dt-fx svg{width:14px;height:14px;flex:none;color:var(--rs-cat);}
.rs-dt-fx small{font-family:var(--font-mono);font-size:.58rem;color:var(--ink-2);padding-left:20px;}
.rs-dt-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px;}
.rs-dt-grid > div{min-width:0;}
.rs-dt-v{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:.7rem;color:var(--ink-1);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.rs-dt-v svg{width:12px;height:12px;flex:none;color:var(--cyan);}
.rs-dt-v.ko{color:#FCA5A5;}
.rs-dt-v.ko svg{color:#F87171;}
.rs-dt-state{margin-top:10px;font-size:.68rem;color:var(--ink-2);}
.rs-dt-state b{font-family:var(--font-mono);font-weight:500;}
.rs-st-done{color:var(--cyan);}
.rs-st-active{color:var(--amber);}
.rs-st-queued{color:var(--violet);}
.rs-st-available{color:var(--lime);}
.rs-st-locked{color:var(--ink-2);}
.rs-act-btn{width:100%;justify-content:center;gap:8px;margin-top:10px;padding-top:calc(10px*var(--scale));padding-bottom:calc(10px*var(--scale));}
.rs-cancel-btn{letter-spacing:.06em;text-transform:uppercase;}
.rs-motif{margin:6px 0 0;font-size:.66rem;line-height:1.4;color:var(--ink-2);}
.rs-motif.ko{color:#FCA5A5;}

/* ---------- 7. doctrine ---------- */
.rs-doctrine{display:grid;grid-template-columns:1fr 1fr;gap:calc(10px*var(--scale));}
.rs-doc-card{
  --rs-doc:#F59E0B;
  position:relative;min-width:0;display:flex;align-items:center;gap:12px;
  padding:calc(8px*var(--scale)) calc(12px*var(--scale));border-radius:10px;
  background:rgba(8,14,24,.72);border:1px solid #1E2E40;cursor:pointer;transition:border-color .15s, box-shadow .15s, opacity .15s;
}
.rs-doc-card.doc-b{--rs-doc:#F472B6;}
.rs-doc-card:hover{border-color:color-mix(in srgb, var(--rs-doc) 70%, transparent);}
.rs-doc-card.picked{cursor:default;border-color:#F59E0B;box-shadow:0 0 0 1px #F59E0B, 0 0 18px rgba(245,158,11,.3);}
.rs-doc-card.locked, .rs-doc-card.dimmed{cursor:not-allowed;opacity:.55;}
.rs-doc-card.locked:hover, .rs-doc-card.dimmed:hover{border-color:#1E2E40;}
.rs-doc-ic{flex:none;width:34px;height:34px;color:var(--rs-doc);}
.rs-doc-ic svg{width:100%;height:100%;}
.rs-doc-main{flex:1;min-width:0;}
.rs-doc-name{display:block;font-family:var(--font-head);font-size:.8rem;color:var(--ink-1);}
.rs-doc-desc{margin:1px 0 0;font-size:.66rem;line-height:1.35;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.rs-doc-lock{display:flex;align-items:center;gap:5px;margin-top:3px;font-family:var(--font-mono);font-size:.6rem;color:#F87171;}
.rs-doc-lock svg{width:11px;height:11px;flex:none;}
.rs-doc-tag{margin-top:3px;font-family:var(--font-mono);font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;color:#F59E0B;}
.rs-doc-note{margin-top:3px;font-size:.6rem;color:var(--ink-2);}
.rs-doc-note.on{color:var(--cyan);}
.rs-doc-fx{flex:none;margin:0;padding:0 0 0 12px;list-style:none;border-left:1px solid var(--glass-border);display:flex;flex-direction:column;gap:2px;}
.rs-doc-fx li{font-family:var(--font-mono);font-size:.62rem;white-space:nowrap;}
.rs-doc-fx li.up{color:var(--lime);}
.rs-doc-fx li.down{color:#FCA5A5;}
.rs-doctrine-tag{color:var(--ink-2) !important;text-transform:none;}

/* ---------- largeurs et hauteurs contraintes ---------- */
@media (max-width: 1600px){
  .rs-branches{grid-template-columns:repeat(4, minmax(0,1fr));}
  .rs-branch{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;}
  .rs-branch-name{font-size:.64rem;letter-spacing:.02em;min-height:0;}
  .rs-branch-ic{width:20px;height:20px;}
}
@media (max-width: 1440px){
  .rs-doc-desc{display:none;}
  .rs-tree{grid-template-columns:auto minmax(0,1fr) 30px minmax(0,1fr);}
  .rs-tier-lbl{min-width:52px;padding-right:10px;margin-right:6px;}
}
@media (max-height: 820px){
  .rs-branch{padding-top:calc(5px*var(--scale));padding-bottom:calc(5px*var(--scale));}
  .rs-doc-desc{display:none;}
  .rs-dt-hero{height:calc(60px*var(--scale));}
  .rs-dt-ic{width:34px;height:34px;}
}
@media (min-width: 2200px){
  .rs-tree{max-width:1400px;}
}
@media (prefers-reduced-motion: reduce){
  .rs-branch, .rs-tcard, .rs-doc-card{transition:none !important;}
  .rs-branch:hover{transform:none;}
  .rs-branch-run{animation:none !important;}
}
