/* =====================================================================
   Planificateur - passe UX page par page
   Charge apres les styles historiques de chaque ecran.
   ===================================================================== */

body.planner-shell {
    --page-ink: #2b2925;
    --page-muted: #777168;
    --page-line: rgba(52, 46, 37, .11);
    --page-line-strong: rgba(157, 126, 62, .34);
    --page-panel: #fff;
    --page-soft: #f4f1ea;
    --page-gold: #9d7e3e;
    --page-green: #287657;
    --page-blue: #476f8e;
    --page-red: #b6463f;
    --page-amber: #ae7126;
    --page-sticky-top: 0px;
}

html.gandalf-embed body.planner-shell { --page-sticky-top: 62px; }

body.planner-shell .planner-page {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

body.planner-shell .planner-page > * { min-width: 0; }

body.planner-shell .workspace-head {
    min-height: 104px;
    margin-bottom: 18px;
    padding-top: 21px;
    padding-bottom: 19px;
}

.workspace-tools {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}

.workspace-action {
    min-height: 38px;
    padding: 8px 12px;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: 1px solid var(--page-line);
    border-radius: 8px;
    background: var(--page-panel);
    color: var(--page-ink);
    font-size: 11.5px;
    font-weight: 700;
    text-decoration: none;
    box-shadow: 0 6px 18px -16px rgba(38, 32, 24, .5);
}

.workspace-action:hover {
    border-color: var(--page-line-strong);
    background: var(--page-soft);
    text-decoration: none;
}

.workspace-action.primary { background: var(--page-ink); color: #fff; border-color: var(--page-ink); }
.workspace-action.primary:hover { background: #111; }
.workspace-action svg { width: 16px; height: 16px; }

/* Surface de commande commune : filtres, periode et actions. */
body.planner-shell .control-deck {
    position: relative;
    margin: 0;
    padding: 11px 12px;
    border: 1px solid var(--page-line);
    border-radius: 8px;
    background: rgba(255, 255, 255, .94);
    box-shadow: 0 8px 24px -24px rgba(30, 25, 18, .55);
}

body.planner-shell .control-deck > h2 { display: none; }
body.planner-shell .control-deck .row,
body.planner-shell .control-deck .filters,
body.planner-shell .control-deck .toolbar,
body.planner-shell .control-deck.sechead { margin: 0; }
body.planner-shell .control-deck .filters,
body.planner-shell .control-deck .toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
}

body.planner-shell .control-deck label {
    min-width: 0;
    color: var(--page-muted);
    font-size: 11px;
    font-weight: 650;
}

.page-section-head {
    min-height: 34px;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 14px;
    padding: 0 2px;
}

.page-section-head h2 {
    margin: 0;
    color: var(--page-ink);
    font: 680 17px/1.2 'Outfit', 'Inter', sans-serif;
    letter-spacing: 0;
}

.page-section-head p { margin: 3px 0 0; color: var(--page-muted); font-size: 11px; }
.page-section-meta { color: var(--page-muted); font-size: 11px; white-space: nowrap; }

.summary-strip {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--page-line);
    border-radius: 8px;
    background: var(--page-panel);
}

.summary-stat {
    min-width: 0;
    min-height: 84px;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    border-right: 1px solid var(--page-line);
}

.summary-stat:last-child { border-right: 0; }
.summary-stat .summary-label { color: var(--page-muted); font-size: 9px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.summary-stat .summary-value { margin-top: 5px; color: var(--page-ink); font: 720 24px/1 'Outfit', 'Inter', sans-serif; letter-spacing: 0; }
.summary-stat .summary-sub { margin-top: 5px; color: var(--page-muted); font-size: 10.5px; }
.summary-stat.is-risk { box-shadow: inset 3px 0 0 var(--page-amber); }
.summary-stat.is-risk .summary-value { color: #9a5b19; }
.summary-stat.is-good { box-shadow: inset 3px 0 0 var(--page-green); }

.table-scroller { width: 100%; min-width: 0; max-width: 100%; overflow-x: auto; scrollbar-width: thin; scrollbar-color: #c9c0af transparent; }
.table-scroller > table { width: 100%; }

body.planner-shell .planner-page .table-wrap {
    margin: 0;
    border-radius: 8px;
    box-shadow: 0 8px 28px -28px rgba(31, 26, 20, .55);
}

body.planner-shell .planner-page table.chanv,
body.planner-shell .planner-page table.db { font-variant-numeric: tabular-nums; }

body.planner-shell .planner-page table.chanv th,
body.planner-shell .planner-page table.db th {
    height: 38px;
    padding-block: 8px;
    background: #f3f0e9;
}

body.planner-shell .planner-page table.chanv td,
body.planner-shell .planner-page table.db td { height: 45px; }

body.planner-shell .planner-page .empty-block,
body.planner-shell .planner-page #empty,
body.planner-shell .planner-page [id$="Empty"] {
    border: 1px dashed var(--page-line-strong);
    border-radius: 8px;
    background: rgba(255,255,255,.55);
}

.home-quick-actions {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
}

.home-quick-action {
    min-height: 50px;
    padding: 9px 11px;
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr) 16px;
    align-items: center;
    gap: 9px;
    border: 1px solid var(--page-line);
    border-radius: 8px;
    background: var(--page-panel);
    color: var(--page-ink);
    text-decoration: none;
}

.home-quick-action:hover { border-color: var(--page-line-strong); background: var(--page-soft); text-decoration: none; }
.home-quick-action > svg:first-child { width: 30px; height: 30px; padding: 7px; border-radius: 7px; background: #eee8da; color: var(--page-gold); }
.home-quick-action > svg:last-child { width: 15px; height: 15px; color: var(--page-muted); }
.home-quick-action strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11.5px; }
.home-quick-action small { display: block; margin-top: 2px; color: var(--page-muted); font-size: 9.5px; }

/* ---------------------------------------------------------------------
   Accueil : poste de pilotage personnalisable.
   --------------------------------------------------------------------- */
body.planner-shell .page-home .workspace-head { display: none; }
body.planner-shell .page-home .home-head {
    min-height: 112px;
    margin: 0 calc(var(--planner-gutter) * -1);
    padding: 23px var(--planner-gutter) 20px;
    align-items: flex-end;
    border-bottom: 1px solid var(--page-line);
    background: rgba(255,255,255,.82);
}

body.planner-shell .page-home .home-head h2 { color: var(--page-ink); font-size: clamp(27px, 3vw, 36px); line-height: 1; letter-spacing: 0; }
body.planner-shell .page-home .home-head p { margin: 7px 0 0 !important; color: var(--page-muted); font-size: 12px; }
body.planner-shell .page-home #customizeBtn { background: var(--page-panel); }
body.planner-shell .page-home .home-grid {
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 9px;
}

body.planner-shell .page-home .hw {
    grid-column: span 3;
    min-height: 148px;
    padding: 15px;
    border-radius: 8px;
    box-shadow: none;
}

body.planner-shell .page-home .hw:hover { transform: none; border-color: var(--page-line-strong); background: #fdfcf9; box-shadow: 0 10px 26px -24px rgba(34,29,22,.6); }
body.planner-shell .page-home .hw-market-trend { grid-column: span 6; }
body.planner-shell .page-home .hw-h { color: var(--page-muted); font-size: 10px; font-weight: 750; letter-spacing: .03em; }
body.planner-shell .page-home .hw-h svg { width: 17px; height: 17px; color: var(--page-gold); }
body.planner-shell .page-home .hw-body { flex: 1; margin-top: 10px; }
body.planner-shell .page-home .hw-kpi { color: var(--page-ink); font-size: 28px; letter-spacing: 0; }
body.planner-shell .page-home .hw-link { margin-top: 8px; color: var(--page-gold); font-size: 10.5px; font-weight: 700; }
body.planner-shell .page-home .hw-link { display: flex; align-items: center; gap: 5px; }
body.planner-shell .page-home .hw-link svg { width: 13px; height: 13px; }
body.planner-shell .page-home .hw-alerts,
body.planner-shell .page-home .hw-ruptures { border-top: 3px solid var(--page-amber); }
body.planner-shell .page-home .hw-planning,
body.planner-shell .page-home .hw-produire { border-top: 3px solid var(--page-blue); }
body.planner-shell .page-home .hw-achats { border-top: 3px solid var(--page-red); }
body.planner-shell .page-home .hw-market-qc,
body.planner-shell .page-home .hw-market-on,
body.planner-shell .page-home .hw-market-trend,
body.planner-shell .page-home .hw-rank { border-top: 3px solid var(--page-green); }
body.planner-shell .page-home #svcLine { margin: 0 !important; padding: 9px 2px 0; border-top: 1px solid var(--page-line); }

/* ---------------------------------------------------------------------
   Tableau de bord ventes.
   --------------------------------------------------------------------- */
body.planner-shell .page-dashboard > .toolbar {
    position: sticky;
    top: var(--page-sticky-top);
    z-index: 18;
    margin: 0;
    padding: 9px 10px;
    border: 1px solid var(--page-line);
    border-radius: 8px;
    background: rgba(255,255,255,.94);
    backdrop-filter: blur(12px);
}

body.planner-shell .page-dashboard .subviews {
    width: 100%;
    margin: 0;
    padding: 0;
    gap: 20px;
    overflow-x: auto;
    border: 0;
    border-bottom: 1px solid var(--page-line);
    border-radius: 0;
    background: transparent;
    scrollbar-width: none;
}

body.planner-shell .page-dashboard .subviews::-webkit-scrollbar { display: none; }
body.planner-shell .page-dashboard .subviews button { position: relative; min-height: 40px; padding: 7px 1px 10px; border-radius: 0; white-space: nowrap; }
body.planner-shell .page-dashboard .subviews button.active { background: transparent; box-shadow: none; }
body.planner-shell .page-dashboard .subviews button.active::after { content: ''; position: absolute; right: 0; bottom: -1px; left: 0; height: 2px; background: var(--page-gold); }
body.planner-shell .page-dashboard .pulse-grid { gap: 12px; }
body.planner-shell .page-dashboard .pulse-grid > .card { min-width: 0; }
body.planner-shell .page-dashboard .card { border-radius: 8px; box-shadow: none; }
body.planner-shell .page-dashboard .pcard-a { border-top: 3px solid var(--page-gold); }
body.planner-shell .page-dashboard .pcard-c { border-top: 3px solid var(--page-amber); }
body.planner-shell .page-dashboard .big-share { color: var(--page-ink); font-size: 48px; letter-spacing: 0; }
body.planner-shell .page-dashboard .health { border: 1px solid var(--page-line); background: var(--page-soft); }
body.planner-shell .page-dashboard .legend { border-radius: 7px; background: var(--page-soft); }
body.planner-shell .page-dashboard .diag-card { border-radius: 8px; box-shadow: none; }

/* ---------------------------------------------------------------------
   Prevision : resume decisionnel + table de travail.
   --------------------------------------------------------------------- */
body.planner-shell .page-forecast .forecast-controls { order: 0; }
body.planner-shell .page-forecast .forecast-summary { order: 1; grid-template-columns: repeat(3, minmax(0, 1fr)); }
body.planner-shell .page-forecast .forecast-table-head { order: 2; }
body.planner-shell .page-forecast .primary-table { order: 3; }
body.planner-shell .page-forecast #empty { order: 4; margin: 0 !important; padding: 18px; }
body.planner-shell .page-forecast .control-fields { align-items: flex-end; }
body.planner-shell .page-forecast .control-fields > div { display: grid; gap: 4px; }
body.planner-shell .page-forecast .risk-toggle { min-height: 38px; margin-left: 0 !important; padding: 7px 10px; border: 1px solid var(--page-line); border-radius: 8px; background: var(--page-soft); }
body.planner-shell .page-forecast .forecast-search { min-width: min(250px, 100%); }
body.planner-shell .page-forecast tr.row-shortage { background: #fffaf1; }
body.planner-shell .page-forecast tr.row-shortage:hover { background: #fff4dd; }
body.planner-shell .page-forecast .primary-table td:first-child,
body.planner-shell .page-forecast .primary-table th:first-child { position: sticky; left: 0; z-index: 3; background: inherit; }
body.planner-shell .page-forecast .primary-table th:first-child { background: #f3f0e9; }

/* ---------------------------------------------------------------------
   Plan de production : demande principale et ressources separees.
   --------------------------------------------------------------------- */
body.planner-shell .page-production .production-overview { display: grid; grid-template-columns: minmax(260px, .72fr) minmax(0, 2.2fr); gap: 10px; }
body.planner-shell .page-production .production-primary,
body.planner-shell .page-production .production-resources { display: grid; gap: 8px; }
body.planner-shell .page-production .production-primary { grid-template-columns: 1fr 1fr; }
body.planner-shell .page-production .production-resources { grid-template-columns: repeat(3, minmax(0, 1fr)); }
body.planner-shell .page-production .production-overview .kpi { min-height: 98px; margin: 0; padding: 13px 14px; border-radius: 8px; box-shadow: none; }
body.planner-shell .page-production .production-primary .kpi:first-child { background: var(--page-ink); color: #fff; border-color: var(--page-ink); }
body.planner-shell .page-production .production-primary .kpi:first-child .lbl,
body.planner-shell .page-production .production-primary .kpi:first-child .big { color: #fff; }
body.planner-shell .page-production .production-overview .kpi .big { font-size: 25px; letter-spacing: 0; }
body.planner-shell .page-production .production-resources .kpi { border-left: 3px solid #c6a96d; }
body.planner-shell .page-production .production-controls { margin: 0 !important; }
body.planner-shell .page-production .production-controls .filters { align-items: center; }
body.planner-shell .page-production .production-tabs {
    position: sticky;
    top: var(--page-sticky-top);
    z-index: 16;
    margin: 0;
    padding: 5px 7px 0;
    flex-wrap: nowrap;
    overflow-x: auto;
    border: 1px solid var(--page-line);
    border-radius: 8px 8px 0 0;
    background: rgba(255,255,255,.95);
    backdrop-filter: blur(12px);
    scrollbar-width: none;
}
body.planner-shell .page-production .production-tabs::-webkit-scrollbar { display: none; }
body.planner-shell .page-production .production-tabs .subtab { flex: 0 0 auto; white-space: nowrap; }
body.planner-shell .page-production .production-tabs .subtab { display: inline-flex; align-items: center; gap: 7px; }
body.planner-shell .page-production .production-tabs .subtab > svg { width: 15px; height: 15px; }
body.planner-shell .page-production #paneFinis,
body.planner-shell .page-production #paneAction { margin-top: -16px; }
body.planner-shell .page-production #paneFinis .table-wrap,
body.planner-shell .page-production #paneAction .table-wrap { border-radius: 0 0 8px 8px; }
body.planner-shell .page-production #rows tr:not(.row-zero) > td:first-child { box-shadow: inset 3px 0 0 var(--page-gold); }
body.planner-shell .page-production .assigned { border-radius: 6px; }

/* ---------------------------------------------------------------------
   Atelier : backlog lisible et grille de capacite.
   --------------------------------------------------------------------- */
body.planner-shell .page-atelier .atelier-weekbar {
    position: sticky;
    top: var(--page-sticky-top);
    z-index: 17;
    min-height: 50px;
    padding: 7px 9px;
    background: rgba(255,255,255,.95);
    backdrop-filter: blur(12px);
}
body.planner-shell .page-atelier .atelier-weekbar #wkLabel { margin-left: 6px; font-size: 16px !important; }
body.planner-shell .page-atelier .atelier-stats { grid-template-columns: repeat(3, minmax(0,1fr)); }
body.planner-shell .page-atelier .backlog-deck { margin: 0; padding: 13px; border-radius: 8px; box-shadow: none; }
body.planner-shell .page-atelier .backlog-head { margin-bottom: 10px !important; }
body.planner-shell .page-atelier .needs-row { display: flex; gap: 8px; overflow-x: auto; padding: 1px 1px 7px; scrollbar-width: thin; }
body.planner-shell .page-atelier .need { min-width: 248px; max-width: 300px; margin: 0; border-radius: 8px; box-shadow: none; }
body.planner-shell .page-atelier .need:hover { transform: none; border-color: var(--page-line-strong); }
body.planner-shell .page-atelier .schedule-scroll { overflow-x: auto; border: 1px solid var(--page-line); border-radius: 8px; background: var(--page-panel); }
body.planner-shell .page-atelier .cal { min-width: 980px; margin: 0; border: 0; border-radius: 0; box-shadow: none; }
body.planner-shell .page-atelier .cal .hd { background: #f3f0e9; }
body.planner-shell .page-atelier .cal .cell { min-height: 178px; background: #fff; }
body.planner-shell .page-atelier .cal .cell.over { background: #f5efe0; box-shadow: inset 0 0 0 2px var(--page-gold); }
body.planner-shell .page-atelier .ocard { border-radius: 7px; border-left: 3px solid var(--page-blue); box-shadow: none; }
body.planner-shell .page-atelier .legend { margin: 0; border-radius: 8px; box-shadow: none; }

/* ---------------------------------------------------------------------
   Achats : sequence MRP en trois actions.
   --------------------------------------------------------------------- */
body.planner-shell .page-purchasing .purchasing-summary { grid-template-columns: repeat(3, minmax(0,1fr)); }
body.planner-shell .page-purchasing .purchasing-summary .kpi { min-height: 98px; border-radius: 8px; box-shadow: none; }
body.planner-shell .page-purchasing .purchasing-summary .kpi:first-child { border-left: 3px solid var(--page-amber); }
body.planner-shell .page-purchasing .purchasing-controls { margin: 0 !important; }
body.planner-shell .page-purchasing .purchasing-controls .filters > label { display: inline-grid; grid-template-columns: auto 68px auto; align-items: center; gap: 6px; }
body.planner-shell .page-purchasing .purchasing-controls input[type="number"] { width: 68px; }
body.planner-shell .page-purchasing .mrp-note { margin: 9px 2px 0 !important; padding-top: 9px; border-top: 1px solid var(--page-line); }
body.planner-shell .page-purchasing .mrp-flow {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--page-line);
    border-radius: 8px;
    background: var(--page-panel);
}
body.planner-shell .page-purchasing .mrp-flow > a {
    min-width: 0;
    min-height: 62px;
    padding: 10px 12px;
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr) 16px;
    align-items: center;
    gap: 9px;
    border-right: 1px solid var(--page-line);
    color: var(--page-ink);
    text-decoration: none;
}
body.planner-shell .page-purchasing .mrp-flow > a:last-child { border-right: 0; }
body.planner-shell .page-purchasing .mrp-flow > a:hover { background: var(--page-soft); }
body.planner-shell .page-purchasing .mrp-flow .flow-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 7px; background: var(--page-soft); color: var(--page-gold); }
body.planner-shell .page-purchasing .mrp-flow svg { width: 15px; height: 15px; }
body.planner-shell .page-purchasing .mrp-flow small { display: block; color: var(--page-muted); font-size: 8px; font-weight: 800; letter-spacing: .1em; }
body.planner-shell .page-purchasing .mrp-flow strong { display: block; overflow: hidden; text-overflow: ellipsis; color: var(--page-ink); font-size: 11px; white-space: nowrap; }
body.planner-shell .page-purchasing .block-title { min-height: 44px; margin: 8px 0 -16px; padding: 0 4px 8px; border-bottom: 1px solid var(--page-line); }
body.planner-shell .page-purchasing .block-title h2 { color: var(--page-ink); font-size: 16px; letter-spacing: 0; }
body.planner-shell .page-purchasing .block-title .pill { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 7px; }
body.planner-shell .page-purchasing .table-wrap { margin-bottom: 10px; }
body.planner-shell .page-purchasing #negStockWarn { margin: 0 !important; border-radius: 8px !important; }

/* ---------------------------------------------------------------------
   Aging : lecture par anciennete, puis detail.
   --------------------------------------------------------------------- */
body.planner-shell .page-aging .age-overview { grid-template-columns: repeat(8, minmax(0,1fr)); gap: 6px; margin: 0; }
body.planner-shell .page-aging .bucket { min-height: 78px; padding: 11px; border-radius: 8px; border-color: var(--page-line); background: var(--page-panel); }
body.planner-shell .page-aging .bucket:hover { border-color: var(--page-line-strong); }
body.planner-shell .page-aging .bucket.active { outline: 0; border-color: var(--page-ink); box-shadow: inset 0 -3px 0 var(--page-ink); }
body.planner-shell .page-aging .bucket .rng { font-size: 9px; letter-spacing: .06em; }
body.planner-shell .page-aging .bucket .n { font-size: 21px; }
body.planner-shell .page-aging .b-0, body.planner-shell .page-aging .b-1 { border-top: 3px solid #6d9b72; }
body.planner-shell .page-aging .b-2, body.planner-shell .page-aging .b-3 { border-top: 3px solid #d0a154; }
body.planner-shell .page-aging .b-4, body.planner-shell .page-aging .b-5 { border-top: 3px solid #c57c47; }
body.planner-shell .page-aging .b-6 { border-top: 3px solid #b64c47; }
body.planner-shell .page-aging .b-7 { border-top: 3px solid #98938b; }
body.planner-shell .page-aging .aging-controls { margin: 0 !important; }
body.planner-shell .page-aging .aging-controls .toolbar { margin: 0; }
body.planner-shell .page-aging .chips { gap: 3px; }
body.planner-shell .page-aging .chip { min-height: 31px; padding: 5px 9px; border-radius: 7px; }
body.planner-shell .page-aging .primary-table td:first-child,
body.planner-shell .page-aging .primary-table th:first-child { position: sticky; left: 0; z-index: 3; background: inherit; }
body.planner-shell .page-aging .primary-table th:first-child { background: #f3f0e9; }

/* ---------------------------------------------------------------------
   Compatibilite : vrai espace maitre-detail.
   --------------------------------------------------------------------- */
body.planner-shell .page-compatibility .split-workspace { grid-template-columns: minmax(320px, 370px) minmax(0, 1fr); gap: 10px; align-items: start; }
body.planner-shell .page-compatibility .list-pane { position: sticky; top: calc(var(--page-sticky-top) + 8px); padding: 12px !important; border-radius: 8px; box-shadow: none; }
body.planner-shell .page-compatibility .list-pane h2 { margin-bottom: 9px; }
body.planner-shell .page-compatibility .list-pane #search { width: 100%; }
body.planner-shell .page-compatibility .compat-progress { margin: -2px 0 11px; padding: 9px 10px; border: 1px solid var(--page-line); border-radius: 7px; background: var(--page-soft); }
body.planner-shell .page-compatibility .compat-progress > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: var(--page-muted); font-size: 9.5px; }
body.planner-shell .page-compatibility .compat-progress strong { color: var(--page-ink); font-size: 10.5px; }
body.planner-shell .page-compatibility .compat-progress > span { height: 4px; display: block; overflow: hidden; margin-top: 7px; border-radius: 2px; background: rgba(80,72,61,.12); }
body.planner-shell .page-compatibility .compat-progress i { width: 0; height: 100%; display: block; border-radius: inherit; background: var(--page-green); transition: width .2s ease; }
body.planner-shell .page-compatibility .lot-list { max-height: calc(100dvh - var(--page-sticky-top) - 275px); padding: 0; }
body.planner-shell .page-compatibility .lot-card { margin: 0; padding: 10px; border-width: 0 0 1px; border-radius: 0; box-shadow: none; }
body.planner-shell .page-compatibility .lot-card:hover { transform: none; background: var(--page-soft); box-shadow: none; }
body.planner-shell .page-compatibility .lot-card.selected { border: 1px solid var(--page-gold); border-radius: 7px; background: #f8f3e8; }
body.planner-shell .page-compatibility .detail-pane { min-width: 0; }
body.planner-shell .page-compatibility .detail-pane > .section-card,
body.planner-shell .page-compatibility .detail-pane .lot-header { border-radius: 8px; box-shadow: none; }
body.planner-shell .page-compatibility .detail-empty { min-height: 390px; display: grid; place-items: center; align-content: center; }
body.planner-shell .page-compatibility .empty-symbol { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 8px; background: var(--page-soft); color: var(--page-gold); }
body.planner-shell .page-compatibility .empty-symbol svg { width: 25px; height: 25px; }
body.planner-shell .page-compatibility .prod-row { min-height: 48px; grid-template-columns: 28px minmax(180px,1fr) 105px 78px 34px; }
body.planner-shell .page-compatibility .save-bar { bottom: 0; padding: 14px 0 5px; background: rgba(255,255,255,.94); backdrop-filter: blur(10px); }

/* ---------------------------------------------------------------------
   Melange : trois postes de travail, resultat toujours visible.
   --------------------------------------------------------------------- */
body.planner-shell .page-blend .blend-workspace { grid-template-columns: minmax(280px, 330px) minmax(390px,1fr) minmax(300px,350px); gap: 10px; align-items: start; }
body.planner-shell .page-blend .blend-workspace > .card { min-width: 0; border-radius: 8px; box-shadow: none; }
body.planner-shell .page-blend .step-title { display: flex; align-items: center; gap: 8px; }
body.planner-shell .page-blend .step-no { width: 22px; height: 22px; display: inline-grid; place-items: center; flex: 0 0 auto; border: 1px solid var(--page-line-strong); border-radius: 6px; background: var(--page-soft); color: var(--page-gold); font-size: 10px; }
body.planner-shell .page-blend .btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
body.planner-shell .page-blend .btn > svg { width: 15px; height: 15px; }
body.planner-shell .page-blend #draftModal h2 { display: flex; align-items: center; gap: 8px; }
body.planner-shell .page-blend #draftModal h2 > svg { width: 18px; height: 18px; color: var(--page-gold); }
body.planner-shell .page-blend .blend-lots-pane,
body.planner-shell .page-blend .blend-result-pane { position: sticky; top: calc(var(--page-sticky-top) + 8px); }
body.planner-shell .page-blend .blend-lots-pane #lots { max-height: calc(100dvh - var(--page-sticky-top) - 340px) !important; }
body.planner-shell .page-blend .blend-lots-pane .lot { margin: 0; border-width: 0 0 1px; border-radius: 0; box-shadow: none; }
body.planner-shell .page-blend .blend-lots-pane .lot:hover { transform: none; background: var(--page-soft); }
body.planner-shell .page-blend .blend-composition-pane { border-top: 3px solid var(--page-gold); }
body.planner-shell .page-blend .blend-composition-pane > .row { padding-bottom: 12px; border-bottom: 1px solid var(--page-line); }
body.planner-shell .page-blend .comp { border: 1px solid var(--page-line); border-radius: 7px; background: #faf9f6; }
body.planner-shell .page-blend .blend-result-pane { border-top: 3px solid var(--page-green); }
body.planner-shell .page-blend .blend-result-pane .kpi { gap: 0; overflow: hidden; border: 1px solid var(--page-line); border-radius: 8px; }
body.planner-shell .page-blend .blend-result-pane .kpi > div { min-height: 72px; padding: 11px; border-right: 1px solid var(--page-line); border-bottom: 1px solid var(--page-line); }
body.planner-shell .page-blend .blend-result-pane .kpi > div:nth-child(2n) { border-right: 0; }
body.planner-shell .page-blend .blend-result-pane .kpi > div:nth-last-child(-n+2) { border-bottom: 0; }

/* ---------------------------------------------------------------------
   Analytics web et inventaire web.
   --------------------------------------------------------------------- */
body.planner-shell .page-web > .sechead:first-of-type { min-height: 48px; }
body.planner-shell .page-web .ai-card { margin: 0; border-radius: 8px; box-shadow: none; }
body.planner-shell .page-web .ai-card .t { display: inline-flex; align-items: center; gap: 7px; }
body.planner-shell .page-web .ai-card .t svg { width: 16px; height: 16px; }
body.planner-shell .page-web > h2 { margin: 5px 0 -7px !important; color: var(--page-ink); font-size: 17px; letter-spacing: 0; }
body.planner-shell .page-web .kpis { gap: 8px; margin: 0; }
body.planner-shell .page-web .kpi { min-height: 92px; border-radius: 8px; box-shadow: none; }
body.planner-shell .page-web .card { border-radius: 8px; box-shadow: none; }
body.planner-shell .page-web .web-grid { gap: 10px; }
body.planner-shell .page-web .web-grid > .card { min-width: 0; }
body.planner-shell .page-web .chartwrap { min-height: 230px; }

body.planner-shell .page-web-inventory .webinv-summary { margin: 0; gap: 0; overflow: hidden; border: 1px solid var(--page-line); border-radius: 8px; }
body.planner-shell .page-web-inventory .webinv-summary .kpi { min-height: 84px; border: 0; border-right: 1px solid var(--page-line); border-radius: 0; box-shadow: none; }
body.planner-shell .page-web-inventory .webinv-summary .kpi:last-child { border-right: 0; }
body.planner-shell .page-web-inventory .webinv-controls { margin: 0 !important; }
body.planner-shell .page-web-inventory .primary-table td:first-child,
body.planner-shell .page-web-inventory .primary-table th:first-child { position: sticky; left: 0; z-index: 3; background: inherit; }
body.planner-shell .page-web-inventory .primary-table th:first-child { background: #f3f0e9; }
body.planner-shell .page-web-inventory .lotdetail > td { position: static !important; }

/* ---------------------------------------------------------------------
   Etats sombres fournis par Gandalf.
   --------------------------------------------------------------------- */
html.gandalf-dark body.planner-shell {
    --page-ink: #f1ede4;
    --page-muted: #aaa397;
    --page-line: rgba(255,255,255,.10);
    --page-line-strong: rgba(221,203,164,.34);
    --page-panel: #2b2823;
    --page-soft: #342f28;
}

html.gandalf-dark body.planner-shell .control-deck,
html.gandalf-dark body.planner-shell .summary-strip,
html.gandalf-dark body.planner-shell .summary-stat,
html.gandalf-dark body.planner-shell .home-quick-action,
html.gandalf-dark body.planner-shell .page-home .home-head,
html.gandalf-dark body.planner-shell .page-home .hw,
html.gandalf-dark body.planner-shell .page-dashboard > .toolbar,
html.gandalf-dark body.planner-shell .page-production .production-tabs,
html.gandalf-dark body.planner-shell .page-atelier .atelier-weekbar,
html.gandalf-dark body.planner-shell .page-atelier .schedule-scroll,
html.gandalf-dark body.planner-shell .page-aging .bucket { background: var(--page-panel); }

html.gandalf-dark body.planner-shell .planner-page table.chanv th,
html.gandalf-dark body.planner-shell .planner-page table.db th,
html.gandalf-dark body.planner-shell .page-forecast .primary-table th:first-child,
html.gandalf-dark body.planner-shell .page-aging .primary-table th:first-child,
html.gandalf-dark body.planner-shell .page-web-inventory .primary-table th:first-child { background: #342f28; }

/* ---------------------------------------------------------------------
   Responsive : chaque page garde son ordre de travail.
   --------------------------------------------------------------------- */
@media (max-width: 1180px) {
    body.planner-shell .page-home .home-grid { grid-template-columns: repeat(8, minmax(0,1fr)); }
    body.planner-shell .page-home .hw { grid-column: span 2; }
    body.planner-shell .page-home .hw-market-trend { grid-column: span 4; }
    body.planner-shell .page-production .production-overview { grid-template-columns: 1fr; }
    body.planner-shell .page-aging .age-overview { grid-template-columns: repeat(4, minmax(0,1fr)); }
    body.planner-shell .page-blend .blend-workspace { grid-template-columns: minmax(270px,.8fr) minmax(390px,1.2fr); }
    body.planner-shell .page-blend .blend-result-pane { position: static; grid-column: 1 / -1; }
    body.planner-shell .page-blend .blend-result-pane .kpi { grid-template-columns: repeat(4,1fr); }
    body.planner-shell .page-blend .blend-result-pane .kpi > div { border-bottom: 0; }
    body.planner-shell .page-blend .blend-result-pane .kpi > div:nth-child(2n) { border-right: 1px solid var(--page-line); }
    body.planner-shell .page-blend .blend-result-pane .kpi > div:last-child { border-right: 0; }
}

@media (max-width: 900px) {
    .workspace-tools { display: none; }
    .summary-strip,
    body.planner-shell .page-forecast .forecast-summary,
    body.planner-shell .page-atelier .atelier-stats,
    body.planner-shell .page-purchasing .purchasing-summary { grid-template-columns: repeat(2, minmax(0,1fr)); }
    .summary-stat:nth-child(2n) { border-right: 0; }
    .summary-stat:nth-child(n+3) { border-top: 1px solid var(--page-line); }
    .home-quick-actions { grid-template-columns: 1fr 1fr; }
    body.planner-shell .page-home .home-grid { grid-template-columns: repeat(4, minmax(0,1fr)); }
    body.planner-shell .page-home .hw { grid-column: span 2; }
    body.planner-shell .page-home .hw-market-trend { grid-column: span 4; }
    body.planner-shell .page-production .production-resources { grid-template-columns: repeat(2,minmax(0,1fr)); }
    body.planner-shell .page-compatibility .split-workspace { grid-template-columns: 1fr; }
    body.planner-shell .page-compatibility .list-pane { position: static; }
    body.planner-shell .page-compatibility .lot-list { max-height: 48vh; }
    body.planner-shell .page-blend .blend-workspace { grid-template-columns: 1fr; }
    body.planner-shell .page-blend .blend-lots-pane { position: static; }
    body.planner-shell .page-blend .blend-result-pane { grid-column: auto; }
}

@media (max-width: 760px) {
    html.gandalf-embed body.planner-shell { --page-sticky-top: 52px; }
    body.planner-shell .planner-page { gap: 12px; }
    body.planner-shell .workspace-head { min-height: 90px; margin-bottom: 13px; }
    body.planner-shell .page-home .home-head { min-height: 98px; align-items: center; }
    body.planner-shell .page-home .home-head h2 { font-size: 28px; }
    .home-quick-actions { display: flex; overflow-x: auto; gap: 7px; scrollbar-width: none; }
    .home-quick-actions::-webkit-scrollbar { display: none; }
    .home-quick-action { min-width: 190px; flex: 0 0 190px; }
    body.planner-shell .page-dashboard > .toolbar { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
    body.planner-shell .page-dashboard > .toolbar > * { flex: 0 0 auto; }
    body.planner-shell .page-dashboard .pulse-grid { gap: 10px; }
    body.planner-shell .page-production .production-primary { grid-template-columns: 1fr 1fr; }
    body.planner-shell .page-production .production-resources { display: flex; overflow-x: auto; }
    body.planner-shell .page-production .production-resources .kpi { min-width: 185px; flex: 0 0 185px; }
    body.planner-shell .page-production .production-controls .filters { display: grid; grid-template-columns: 1fr 1fr; }
    body.planner-shell .page-production .production-controls .filters > label,
    body.planner-shell .page-production .production-controls .filters > button { width: 100%; }
    body.planner-shell .page-purchasing .mrp-flow { display: flex; overflow-x: auto; }
    body.planner-shell .page-purchasing .mrp-flow > a { min-width: 210px; flex: 0 0 210px; }
    body.planner-shell .page-atelier .atelier-weekbar { flex-wrap: nowrap; overflow-x: auto; }
    body.planner-shell .page-atelier .atelier-weekbar > * { flex: 0 0 auto; }
    body.planner-shell .page-atelier .need { min-width: 224px; }
    body.planner-shell .page-aging .age-overview { display: flex; overflow-x: auto; gap: 6px; scrollbar-width: none; }
    body.planner-shell .page-aging .age-overview .bucket { min-width: 112px; flex: 0 0 112px; }
    body.planner-shell .page-aging .aging-controls .toolbar { display: grid; grid-template-columns: 1fr; }
    body.planner-shell .page-aging .aging-controls .seg { overflow-x: auto; }
    body.planner-shell .page-compatibility .prod-row { min-width: 680px; }
    body.planner-shell .page-compatibility .detail-pane { overflow-x: auto; }
    body.planner-shell .page-web .web-grid { grid-template-columns: 1fr; }
    body.planner-shell .page-web-inventory .webinv-summary { display: flex; overflow-x: auto; }
    body.planner-shell .page-web-inventory .webinv-summary .kpi { min-width: 155px; flex: 0 0 155px; }
}

@media (max-width: 520px) {
    body.planner-shell .page-home .home-grid { grid-template-columns: 1fr; }
    body.planner-shell .page-home .hw,
    body.planner-shell .page-home .hw-market-trend { grid-column: auto; }
    body.planner-shell .page-forecast .forecast-summary,
    body.planner-shell .page-atelier .atelier-stats,
    body.planner-shell .page-purchasing .purchasing-summary { grid-template-columns: 1fr; }
    .summary-stat { min-height: 72px; border-right: 0; border-bottom: 1px solid var(--page-line); }
    .summary-stat:last-child { border-bottom: 0; }
    body.planner-shell .page-production .production-primary { grid-template-columns: 1fr; }
    body.planner-shell .page-production .production-controls .filters { grid-template-columns: 1fr; }
    body.planner-shell .page-blend .blend-result-pane .kpi { grid-template-columns: 1fr 1fr; }
    body.planner-shell .page-blend .blend-result-pane .kpi > div:nth-child(2n) { border-right: 0; }
    body.planner-shell .page-blend .blend-result-pane .kpi > div:nth-child(-n+2) { border-bottom: 1px solid var(--page-line); }
}
