.shell { display: flex; flex-direction: column; height: 100vh; margin: 0; &__header { flex: 0 0 auto; padding: 1rem 1.5rem; background: var(--color-surface); border-bottom: 1px solid var(--color-border); h1 { font-size: 1.15rem; font-weight: 600; margin: 0; color: var(--color-text); } } // min-height: 0 est nécessaire ici (et à chaque niveau descendant // jusqu'aux listes scrollables) : par défaut un enfant flex ne // rétrécit jamais sous la taille de son contenu, ce qui empêcherait // tout overflow interne et ferait déborder toute la page à la place. &__main { flex: 1 1 auto; min-height: 0; display: grid; grid-template-columns: 1fr; grid-template-rows: 1fr 1fr; gap: 1.25rem; padding: 1.5rem; max-width: 1280px; margin: 0 auto; width: 100%; box-sizing: border-box; } @media (min-width: 800px) { &__main { grid-template-columns: 2fr 1fr; grid-template-rows: 1fr; } } &__panel { min-width: 0; min-height: 0; display: flex; flex-direction: column; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 12px; padding: 1.25rem; overflow: hidden; } }