html,
body {
    height: 100%;
}

body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.wrap {
    flex: 1 0 auto;
}

.wrap > .container {
    padding: 70px 15px 20px;
}

footer {
    flex-shrink: 0;
}

.footer {
    height: 60px;
    background-color: #f5f5f5;
    border-top: 1px solid #ddd;
    padding-top: 20px;
}

.jumbotron {
    text-align: center;
    background-color: transparent;
}

.jumbotron .btn {
    font-size: 21px;
    padding: 14px 24px;
}

.not-set {
    color: #c55;
    font-style: italic;
}

/* add sorting icons to gridview sort links */
a.asc:after, a.desc:after {
    position: relative;
    top: 1px;
    display: inline-block;
    font-family: 'Glyphicons Halflings';
    font-style: normal;
    font-weight: normal;
    line-height: 1;
    padding-left: 5px;
}

a.asc:after {
    content: /*"\e113"*/ "\e151";
}

a.desc:after {
    content: /*"\e114"*/ "\e152";
}

.sort-numerical a.asc:after {
    content: "\e153";
}

.sort-numerical a.desc:after {
    content: "\e154";
}

.sort-ordinal a.asc:after {
    content: "\e155";
}

.sort-ordinal a.desc:after {
    content: "\e156";
}

.grid-view th {
    white-space: nowrap;
}

.hint-block {
    display: block;
    margin-top: 5px;
    color: #999;
}

.error-summary {
    color: #a94442;
    background: #fdf7f7;
    border-left: 3px solid #eed3d7;
    padding: 10px 20px;
    margin: 0 0 15px 0;
}

/* Navbar CTA pill — isolated class avoids Bootstrap/wcag specificity conflicts */
.btn-demo-pill {
    background-color: #4fc3f7;
    border-color: #4fc3f7;
    color: #0d1b2a;
    font-weight: 600;
    line-height: 1.4;
    text-decoration: none;
}
.btn-demo-pill:hover,
.btn-demo-pill:focus {
    background-color: #81d4fa;
    border-color: #81d4fa;
    color: #0d1b2a;
    text-decoration: none;
}
.btn-demo-pill:active {
    background-color: #29b6f6;
    border-color: #29b6f6;
    color: #0d1b2a;
}

/* ── Integrations page ──────────────────────────────────── */

.integrations-hero {
    background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
    padding-top: 80px; /* clear the fixed navbar */
}

.integration-card {
    transition: box-shadow 0.15s ease, transform 0.15s ease;
    cursor: default;
}

.integration-card:hover {
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.10);
    transform: translateY(-2px);
}

.stack-option {
    transition: background-color 0.12s, border-color 0.12s;
    display: inline-flex;
    align-items: center;
}

.stack-option.active,
.stack-option.btn-primary {
    font-weight: 600;
}

.letter-spacing-1 {
    letter-spacing: 0.05em;
}

#stack-result {
    border-radius: 8px;
}

/* ── Stat cards (customer dashboard KPI strip) ────────────── */
.stat-card { border-radius: 12px; padding: 1.5rem; display: flex; flex-direction: column; gap: .5rem; border-left: 4px solid transparent; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.06); transition: box-shadow .15s; }
.stat-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,.1); }
.stat-card--blue  { border-left-color: #0d6efd; background: #f0f6ff; }
.stat-card--green { border-left-color: #198754; background: #f0faf4; }
.stat-card--amber { border-left-color: #fd7e14; background: #fff8f0; }
.stat-card--red   { border-left-color: #dc3545; background: #fff0f0; }
.stat-card__icon  { font-size: 1.5rem; }
.stat-card__value { font-size: 2rem; font-weight: 700; line-height: 1; }
.stat-card__label { font-size: .8rem; color: #6c757d; text-transform: uppercase; letter-spacing: .05em; }

/* ── Quick action tiles ───────────────────────────────────── */
.action-tile { display: flex; flex-direction: column; align-items: center; text-align: center; gap: .4rem; padding: 1rem .5rem; border-radius: 10px; border: 1px solid #e9ecef; background: #fff; color: #212529; text-decoration: none; transition: all .15s; font-size: .8rem; }
.action-tile:hover { background: #f8f9fa; border-color: #0d6efd; color: #0d6efd; transform: translateY(-1px); box-shadow: 0 4px 8px rgba(0,0,0,.08); }
.action-tile__icon  { font-size: 1.5rem; }
.action-tile__label { line-height: 1.2; }
.action-tile--red { color: #dc3545; border-color: #f5c2c7; }
.action-tile--red:hover { background: #fff0f0; border-color: #dc3545; color: #dc3545; }

/* ── Empty states ─────────────────────────────────────────── */
.empty-state { max-width: 360px; margin: 0 auto; }
.empty-state__icon { font-size: 3rem; opacity: .4; }
.empty-state h5 { color: #495057; }

/* ── Error page ───────────────────────────────────────────── */
.error-page { max-width: 480px; margin: 0 auto; }

/* ── Price calculator — hide secondary columns on small screens ─── */
@media (max-width: 767px) {
    .col-secondary { display: none; }
}

/* ── Self-service portal layouts ────────────────────────────────── */
.portal-narrow  { max-width: 640px; }
.portal-medium  { max-width: 720px; }

/* ── Dispute detail ─────────────────────────────────────────────── */
.dispute-detail { max-width: 680px; }
.dispute-timeline-icon { width: 40px; flex-shrink: 0; text-align: center; }

/* ── Invoice line-item table column widths ──────────────────────── */
.invoice-col-qty    { width: 90px; }
.invoice-col-rate   { width: 105px; }
.invoice-col-amount { width: 110px; }
.invoice-col-vat    { width: 95px; }

/* ── Cookie consent banner ──────────────────────────────────────── */
#cookie-banner {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    /* Below the toast-container (z-index:9999 in layouts/main.php) so a flash
       toast (e.g. contact-form confirmation) stays visible above the banner. */
    z-index: 9998;
    background: #0d1b2a;
    color: #fff;
    padding: .75rem 1rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .75rem;
    box-shadow: 0 -2px 8px rgba(0, 0, 0, .3);
}
#cookie-banner p { flex: 1; margin: 0; }
#cookie-accept-btn { min-height: 44px; min-width: 80px; }
@media (max-width: 575px) {
    #cookie-banner { flex-direction: column; align-items: stretch; }
    #cookie-banner p { flex: none; }
    #cookie-accept-btn { width: 100%; }
}

/* Avoid single-word last lines (widows) in headings and body copy.
   Unsupported browsers just fall back to normal wrapping. */
h1, h2, h3, h4, h5, h6 {
    text-wrap: balance;
}
p, li, blockquote, figcaption, dd, dt {
    text-wrap: pretty;
}
