/* Base display utilities */
.d-none          { display: none !important; }
.d-inline       { display: inline !important; }
.d-inline-block { display: inline-block !important; }
.d-block        { display: block !important; }
.d-table        { display: table !important; }
.d-table-row    { display: table-row !important; }
.d-table-cell   { display: table-cell !important; }
.d-flex         { display: flex !important; }
.d-inline-flex  { display: inline-flex !important; }
.d-grid         { display: grid !important; }
.d-inline-grid  { display: inline-grid !important; }

/* Flex direction */
.flex-row            { flex-direction: row !important; }
.flex-column         { flex-direction: column !important; }
.flex-row-reverse    { flex-direction: row-reverse !important; }
.flex-column-reverse { flex-direction: column-reverse !important; }

/* Flex wrap */
.flex-nowrap  { flex-wrap: nowrap !important; }
.flex-wrap    { flex-wrap: wrap !important; }
.flex-wrap-reverse { flex-wrap: wrap-reverse !important; }

/* Justify content */
.justify-start    { justify-content: flex-start !important; }
.justify-end      { justify-content: flex-end !important; }
.justify-center   { justify-content: center !important; }
.justify-between  { justify-content: space-between !important; }
.justify-around   { justify-content: space-around !important; }
.justify-evenly   { justify-content: space-evenly !important; }

/* Align items */
.align-items-start    { align-items: flex-start !important; }
.align-items-end      { align-items: flex-end !important; }
.align-items-center   { align-items: center !important; }
.align-items-baseline { align-items: baseline !important; }
.align-items-stretch  { align-items: stretch !important; }

/* Align self */
.align-self-auto      { align-self: auto !important; }
.align-self-start     { align-self: flex-start !important; }
.align-self-end       { align-self: flex-end !important; }
.align-self-center    { align-self: center !important; }
.align-self-baseline  { align-self: baseline !important; }
.align-self-stretch   { align-self: stretch !important; }

/* Align content */
.align-content-start     { align-content: flex-start !important; }
.align-content-end       { align-content: flex-end !important; }
.align-content-center   { align-content: center !important; }
.align-content-between  { align-content: space-between !important; }
.align-content-around   { align-content: space-around !important; }
.align-content-stretch  { align-content: stretch !important; }

/* Flex grow/shrink */
.flex-grow-0 { flex-grow: 0 !important; }
.flex-grow-1 { flex-grow: 1 !important; }
.flex-shrink-0 { flex-shrink: 0 !important; }
.flex-shrink-1 { flex-shrink: 1 !important; }

/* Text alignment */
.text-start    { text-align: left !important; }
.text-center   { text-align: center !important; }
.text-end      { text-align: right !important; }

/* Float */
.float-start   { float: left !important; }
.float-end     { float: right !important; }
.float-none    { float: none !important; }

/* Position */
.position-static   { position: static !important; }
.position-relative { position: relative !important; }
.position-absolute { position: absolute !important; }
.position-fixed    { position: fixed !important; }
.position-sticky   { position: sticky !important; }

/* Visibility */
.visible   { visibility: visible !important; }
.invisible { visibility: hidden !important; }

/* Extra small (default) handled above */

/* Small devices (sm): ≥576px */
@media (min-width: 576px) {
    .d-sm-none          { display: none !important; }
    .d-sm-inline       { display: inline !important; }
    .d-sm-inline-block { display: inline-block !important; }
    .d-sm-block        { display: block !important; }
    .d-sm-table        { display: table !important; }
    .d-sm-table-row    { display: table-row !important; }
    .d-sm-table-cell   { display: table-cell !important; }
    .d-sm-flex         { display: flex !important; }
    .d-sm-inline-flex  { display: inline-flex !important; }
    .d-sm-grid         { display: grid !important; }
    .d-sm-inline-grid  { display: inline-grid !important; }
}

/* Medium devices (md): ≥768px */
@media (min-width: 768px) {
    .d-md-none          { display: none !important; }
    .d-md-inline       { display: inline !important; }
    .d-md-inline-block { display: inline-block !important; }
    .d-md-block        { display: block !important; }
    .d-md-table        { display: table !important; }
    .d-md-table-row    { display: table-row !important; }
    .d-md-table-cell   { display: table-cell !important; }
    .d-md-flex         { display: flex !important; }
    .d-md-inline-flex  { display: inline-flex !important; }
    .d-md-grid         { display: grid !important; }
    .d-md-inline-grid  { display: inline-grid !important; }
}

/* Large devices (lg): ≥992px */
@media (min-width: 992px) {
    .d-lg-none          { display: none !important; }
    .d-lg-inline       { display: inline !important; }
    .d-lg-inline-block { display: inline-block !important; }
    .d-lg-block        { display: block !important; }
    .d-lg-table        { display: table !important; }
    .d-lg-table-row    { display: table-row !important; }
    .d-lg-table-cell   { display: table-cell !important; }
    .d-lg-flex         { display: flex !important; }
    .d-lg-inline-flex  { display: inline-flex !important; }
    .d-lg-grid         { display: grid !important; }
    .d-lg-inline-grid  { display: inline-grid !important; }
}

/* Extra large devices (xl): ≥1200px */
@media (min-width: 1200px) {
    .d-xl-none          { display: none !important; }
    .d-xl-inline       { display: inline !important; }
    .d-xl-inline-block { display: inline-block !important; }
    .d-xl-block        { display: block !important; }
    .d-xl-table        { display: table !important; }
    .d-xl-table-row    { display: table-row !important; }
    .d-xl-table-cell   { display: table-cell !important; }
    .d-xl-flex         { display: flex !important; }
    .d-xl-inline-flex  { display: inline-flex !important; }
    .d-xl-grid         { display: grid !important; }
    .d-xl-inline-grid  { display: inline-grid !important; }
}

/* XXL (optional, for very large screens) */
@media (min-width: 1400px) {
    .d-xxl-none          { display: none !important; }
    .d-xxl-inline       { display: inline !important; }
    .d-xxl-inline-block { display: inline-block !important; }
    .d-xxl-block        { display: block !important; }
    .d-xxl-flex         { display: flex !important; }
    .d-xxl-inline-flex  { display: inline-flex !important; }
}