html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem var(--secondaryColor);
}

html {
  position: relative;
  min-height: 100%;
}

body {
  /* No margin-bottom: sticky footer uses flexbox so footer sits at viewport bottom when content is short */
}

:root {
    --primaryColor: rgba(39, 63, 70, 0.9) !important;
    --secondaryColor: #27ae60;
}

.sheepDogsBlue {
    background-color: var(--primaryColor) !important;
}
.sheepDogsGreen {
    background-color: var(--secondaryColor);
}

.mainNav {
    background-color: transparent !important;
    border: 0 !important;
    min-height: 0; /* allow flex child to shrink for scroll */
}

/* Main content area and card fill remaining space between header/nav and footer */
.mainNav main {
    min-height: 0;
}
.main-content-card {
    min-height: 0;
}
.mainNav > .nav {
    background-color: transparent !important;
}
.mainNav > .nav > .nav-item {
    background-color: var(--primaryColor) !important;
    color: white !important;
    text-decoration: none !important;
}
    .mainNav > .nav > .nav-item > .nav-link {
        background-color: var(--primaryColor) !important;
        color: white !important;
        text-decoration: none !important;
        border-radius: 0 !important;
        border: 0 !important;
        padding: 0.5rem 3rem;
    }
.mainNav > .nav > .nav-item > a.active {
    color: black !important;
    background-color: var(--secondaryColor) !important;    
}
    .mainNav > .nav > .nav-item > a:hover {
        background-color: rgba(216, 192, 185, 0.5) !important;
        color: rgba(39, 63, 70, 0.85) !important;
    }
header{
    background-color: var(--primaryColor);
}

/* Mobile header: brand on own row (centered), then h3 centered with burger toggler on the right */
@media (max-width: 575.98px) {
    header .navbar .navbar-brand.navbar-brand-mobile {
        width: 100%;
        flex-basis: 100%;
    }
    header .navbar .navbar-title-toggler-wrapper {
        width: 100%;
        flex-basis: 100%;
    }
}
@media (min-width: 576px) {
    header .navbar .navbar-title-toggler-wrapper {
        display: contents;
    }
    header .navbar .navbar-toggler-spacer {
        flex-grow: 0;
    }
}

/* Active page link in navbar burger menu (mobile) */
.navbar .navbar-nav .nav-link.active {
    color: black !important;
    background-color: var(--secondaryColor) !important;
}

/* Center burger menu content on small screens (below navbar-expand-sm) */
@media (max-width: 575.98px) {
    .navbar .navbar-collapse {
        align-items: center;
        text-align: center;
        justify-content: center;
        flex-direction: column;
    }
    .navbar .navbar-collapse .navbar-nav {
        justify-content: center;
        width: 100%;
    }
    .navbar .navbar-collapse .nav-item {
        text-align: center;
    }
    .navbar .navbar-collapse .nav-link {
        justify-content: center;
        text-align: center;
    }
    /* Login partial: center the ul and form */
    .navbar .navbar-collapse .navbar-nav .nav-item .form-inline {
        display: flex;
        justify-content: center;
        width: 100%;
    }
    .navbar .navbar-collapse .navbar-nav .nav-item .form-inline .btn {
        text-align: center;
    }
}
.identityCard{
    max-width:50rem;
    padding: 2rem; 
    margin-top: 0 !important;
    border: none;
}

/* Identity pages: use sheepdogs green for primary/success buttons */
.identityCard .btn-success,
.identityCard .btn-primary {
    background-color: var(--secondaryColor) !important;
    border-color: var(--secondaryColor) !important;
}
.identityCard .btn-success:hover,
.identityCard .btn-primary:hover {
    background-color: #1e8449 !important;
    border-color: #1e8449 !important;
}
.identityCard .btn-outline-primary {
    color: var(--secondaryColor);
    border-color: var(--secondaryColor);
}
.identityCard .btn-outline-primary:hover {
    background-color: var(--secondaryColor);
    border-color: var(--secondaryColor);
    color: #fff;
}

/* Identity: green focus ring for form elements and buttons (no blue outline) */
.identityCard .btn:focus,
.identityCard .btn:active:focus,
.identityCard .form-control:focus,
.identityCard .form-check-input:focus,
.identityCard .form-select:focus {
    box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem var(--secondaryColor);
    border-color: var(--secondaryColor);
}
.identityCard .form-control:focus,
.identityCard .form-select:focus {
    border-color: var(--secondaryColor);
}

/* Manage account nav: sheepdogs green for active and hover */
.identityCard .nav-pills .nav-link {
    color: var(--primaryColor);
}
.identityCard .nav-pills .nav-link:hover {
    background-color: rgba(39, 174, 96, 0.2);
    color: var(--secondaryColor);
}
.identityCard .nav-pills .nav-link.active {
    background-color: var(--secondaryColor) !important;
    color: #fff !important;
}

/* Home: package boxes – image fills the card top with consistent aspect ratio */
.package-box-image img {
    object-fit: cover;
}

/* Home: package card link hover */
a:has(> .card) .card {
    transition: box-shadow 0.2s ease, transform 0.2s ease;
}
a:has(> .card):hover .card {
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
    transform: translateY(-2px);
}

#filter #toggleFilter:hover,
#filter #toggleFilter:active,
#filter #toggleFilter:focus {
    background-color: #1e8449 !important;
}

/* My Packages index: tile/card grid (data rendered into divs from DataTables) */
.packages-tile-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    width: 100%;
}
/* 1 tile per row; flex basis fills width minus no gaps */
.package-tile-cell {
    flex: 0 0 100%;
    min-width: 0;
    box-sizing: border-box;
}
/* 2 per row: (100% - 1 gap) / 2 */
@media (min-width: 576px) {
    .package-tile-cell {
        flex: 0 0 calc((100% - 1rem) / 2);
    }
}
/* 3 per row: (100% - 2 gaps) / 3 */
@media (min-width: 768px) {
    .package-tile-cell {
        flex: 0 0 calc((100% - 2rem) / 3);
    }
}
/* 4 per row: (100% - 3 gaps) / 4 */
@media (min-width: 992px) {
    .package-tile-cell {
        flex: 0 0 calc((100% - 3rem) / 4);
    }
}

/* My Packages index: DataTables Scroller + responsive tile grid (4 cols at 992px+, 3 at 768px, 2 at 576px, 1 on mobile) */
.packages-tile-scroller-wrapper .dts tbody th,
.packages-tile-scroller-wrapper .dts tbody td {
    white-space: normal;
    vertical-align: top;
}
.packages-tile-scroller-wrapper .dts tbody {
    display: grid;
    gap: 1rem;
    grid-template-columns: 1fr;
}
@media (min-width: 576px) {
    .packages-tile-scroller-wrapper .dts tbody {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (min-width: 768px) {
    .packages-tile-scroller-wrapper .dts tbody {
        grid-template-columns: repeat(3, 1fr);
    }
}
@media (min-width: 992px) {
    .packages-tile-scroller-wrapper .dts tbody {
        grid-template-columns: repeat(4, 1fr);
    }
}
/* tr as grid row placeholder so Scroller row height (240px) matches one visual row of tiles */
.packages-tile-scroller-wrapper .dts tbody tr {
    display: contents;
}
.packages-tile-scroller-wrapper .dts tbody td {
    min-width: 0;
    min-height: 240px;
    border: none;
    padding: 0;
    vertical-align: top;
    box-sizing: border-box;
}
.packages-tile-scroller-wrapper .dts tbody td .package-tile {
    height: 100%;
    min-height: 200px;
}
.packages-tile-scroller-wrapper .dts div.dataTables_scrollBody {
    background: transparent;
}
.packages-tile-scroller-wrapper .dts div.dataTables_scrollBody table {
    background: transparent;
}
.packages-tile-scroller-wrapper .packages-tile-datatable thead th {
    border: none;
    padding: 0;
    height: 0;
    line-height: 0;
    overflow: hidden;
}
.package-tile {
    height: 100%;
    cursor: pointer;
    border: 1px solid rgba(0, 0, 0, 0.125);
    border-radius: 0.375rem;
    background: #fff;
    transition: box-shadow 0.2s ease, transform 0.2s ease;
    display: flex; 
    flex-direction: column;
    padding: 1rem;
    justify-content: center;
    text-align: center;
}
.package-tile:hover {
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    transform: translateY(-2px);
}
.package-tile-body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.5rem;
}
.package-tile-title, .package-tile-location {
    font-weight: 500;
    line-height: 1.3;
}
.package-tile-flag {
    /*width: 32px;
    height: auto;*/
}
.package-tile-wrapper{
    height: 100%;
}
.navbar-nav .nav-item {
    display: flex;
    justify-content: center;
    align-items: center;
    text-align: center;
}

@media(max-width: 767.98px) {
    #filter .input-group > .btn {
        width: 100%;
        border-radius: 0.25rem;
        margin-top: 0.5rem;
    }
    #collapseFilter .inset .col{
        min-width: 100%;
    }
}

.table-hover > tbody > tr:hover {
    --bs-table-accent-bg: white;
}

tbody{ padding: 0.25rem;}

.dts_label{
    display: none !important;
}
.package-tile-timestamp {
    display: flex;
    justify-content: center;
    align-items:center;
}


/* Small variant for .form-floating – compact height with even spacing */
.form-floating.form-floating-sm .form-control,
.form-floating.form-floating-sm .form-select {
    height: calc(2.5rem + 2px);
    min-height: calc(2.5rem + 2px);
    padding: 0.4rem 0.5rem;
    font-size: 0.875rem;
    line-height: 1.35;
    border-radius: 0.25rem;
}

/* Floated state: consistent top/bottom padding so label and value line up across all fields */
.form-floating.form-floating-sm .form-control:focus,
.form-floating.form-floating-sm .form-control:not(:placeholder-shown),
.form-floating.form-floating-sm .form-control:-webkit-autofill,
.form-floating.form-floating-sm .form-select {
    padding-top: 1rem;
    padding-bottom: 0.4rem;
}

.form-floating.form-floating-sm .form-control:not(:-moz-placeholder-shown) {
    padding-top: 1rem;
    padding-bottom: 0.4rem;
}

/* Label: same padding as input so placeholder and label align */
.form-floating.form-floating-sm > label {
    padding: 0.4rem 0.5rem;
    font-size: 0.8125rem;
    line-height: 1.35;
}

/* Floated label: same transform for all (no translateX so labels align evenly) */
.form-floating.form-floating-sm > .form-control:focus ~ label,
.form-floating.form-floating-sm > .form-control:not(:placeholder-shown) ~ label,
.form-floating.form-floating-sm > .form-select ~ label,
.form-floating.form-floating-sm > .form-control-plaintext ~ label,
.form-floating.form-floating-sm > .form-control:-webkit-autofill ~ label {
    transform: scale(0.85) translateY(-0.4rem);
    opacity: 0.8;
}

.form-floating.form-floating-sm > .form-control:not(:-moz-placeholder-shown) ~ label {
    transform: scale(0.85) translateY(-0.4rem);
    opacity: 0.8;
}

/* Textarea: let height be driven by rows */
.form-floating.form-floating-sm textarea.form-control {
    height: auto;
}

/* Filter row: equal-width columns so floating forms align and space evenly */
#collapseFilter .filter-floating-row .col {
    min-width: 0;
    flex: 1 1 0;
}
#collapseFilter .filter-floating-row .form-floating {
    width: 100%;
}
#collapseFilter .inset {
    padding: 0.35rem 1rem 0.35rem 1rem;
}
