/*
 * kv_std_polish.css — universal production-polish for every page served through
 * incfiles/_kv_standard_page_head.php (body.kv-std-page). Loaded ONCE by the shell
 * partial so every migrated page inherits it with no per-page edit.
 *
 * Rules of thumb:
 *   - Nothing here breaks or restyles existing modules — all rules are scoped to
 *     `body.kv-std-page` so legacy standalone pages are untouched.
 *   - Only visual polish: spacing, typography, hover/focus affordances, empty
 *     states, mobile responsive. No colour-system changes, no layout rewiring.
 *   - Keep rules behind the same breakpoints Bootstrap already uses.
 */

/* ---- Toolbar / breadcrumb strip -------------------------------------------- */
body.kv-std-page #kt_app_toolbar { padding-top: 14px; padding-bottom: 14px; }
body.kv-std-page .page-heading   { font-size: 1.5rem; line-height: 1.2; }
body.kv-std-page .breadcrumb     { font-size: 12.5px; margin-top: 4px; }
body.kv-std-page .breadcrumb .breadcrumb-item { line-height: 1.4; }

/* ---- Content container width + spacing ------------------------------------- */
body.kv-std-page #kt_app_content { padding-top: 4px; }
body.kv-std-page #kt_app_content_container { padding-left: 20px; padding-right: 20px; }
@media (min-width: 1200px) {
    body.kv-std-page #kt_app_content_container { padding-left: 28px; padding-right: 28px; }
}

/* ---- Section headings (any .fw-bold inside content_container) -------------- */
body.kv-std-page h2.page-section-title,
body.kv-std-page .page-section-title {
    font-size: 1.15rem; font-weight: 700; margin: 24px 0 12px; letter-spacing: -.01em;
}

/* ---- Cards: consistent hover elevation across modules ---------------------- */
body.kv-std-page .card,
body.kv-std-page .kv-std-card {
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
body.kv-std-page .card.kv-std-hover:hover,
body.kv-std-page .kv-std-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 28px -18px rgba(15, 23, 42, .22);
}

/* ---- Buttons: tighten mobile touch targets without inflating desktop ------- */
@media (max-width: 575.98px) {
    body.kv-std-page .btn { min-height: 42px; }
    body.kv-std-page .btn-lg { min-height: 46px; }
}

/* ---- Form fields: consistent focus ring ------------------------------------ */
body.kv-std-page .form-control:focus,
body.kv-std-page .form-select:focus {
    border-color: rgba(99, 56, 246, .55);
    box-shadow: 0 0 0 .15rem rgba(99, 56, 246, .18);
}

/* ---- Empty states (any element with .kv-empty) ----------------------------- */
body.kv-std-page .kv-empty {
    text-align: center; padding: 42px 20px; color: #64748b;
    background: #fff; border: 1px dashed #e2e8f0; border-radius: 14px;
}
body.kv-std-page .kv-empty i { font-size: 32px; color: #94a3b8; margin-bottom: 10px; display: block; }
body.kv-std-page .kv-empty .kv-empty-title { font-weight: 700; color: #0f172a; margin-bottom: 4px; }
body.kv-std-page .kv-empty .kv-empty-sub   { font-size: 14px; }

/* ---- HOPIN visual-polish fixes (founder 2026-10-20: `.kv-hp-*` was designed
 *      for a mobile-only shell; inside the standard container at desktop width
 *      the cards felt mobile-y and the sticky CTA sat too close to the footer).
 *      Scoped to body.kv-std-page so hopin pages in the mobile app shell are
 *      unaffected. ----------------------------------------------------------- */
body.kv-std-page .kv-hp-card {
    background: #fff; border: 1px solid #e6e8f0; border-radius: 14px;
    padding: 18px 20px; margin-bottom: 12px;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
body.kv-std-page .kv-hp-card:hover { transform: translateY(-2px); box-shadow: 0 10px 28px -18px rgba(15, 23, 42, .22); }
body.kv-std-page .kv-hp-section-title { font-size: 1.1rem; font-weight: 700; margin: 24px 0 12px; }
body.kv-std-page .kv-hp-pill { font-size: 11.5px; padding: 3px 10px; border-radius: 999px; text-transform: capitalize; font-weight: 600; }
body.kv-std-page .kv-hp-pill-primary { background: rgba(79, 70, 229, .1); color: #4f46e5; }
body.kv-std-page .kv-hp-pill-success { background: rgba(16, 185, 129, .1); color: #047857; }
body.kv-std-page .kv-hp-pill-warning { background: rgba(234, 179, 8, .14); color: #a16207; }
body.kv-std-page .kv-hp-pill-danger  { background: rgba(239, 68, 68, .1); color: #b91c1c; }
body.kv-std-page .kv-hp-pill-info    { background: rgba(14, 165, 233, .1); color: #0369a1; }
body.kv-std-page .kv-hp-pill-muted   { background: rgba(100, 116, 139, .12); color: #475569; }
body.kv-std-page .kv-hp-subtle { color: #64748b; font-size: 13px; }
body.kv-std-page .kv-hp-note {
    display: flex; align-items: center; gap: 12px;
    background: rgba(99, 56, 246, .06); border: 1px solid rgba(99, 56, 246, .14);
    color: #334155; border-radius: 12px; padding: 12px 16px; margin-bottom: 14px; font-size: 14px;
}
body.kv-std-page .kv-hp-note.warn   { background: rgba(234, 179, 8, .09); border-color: rgba(234, 179, 8, .25); color: #713f12; }
body.kv-std-page .kv-hp-note.danger { background: rgba(239, 68, 68, .07); border-color: rgba(239, 68, 68, .22); color: #7f1d1d; }
body.kv-std-page .kv-hp-note i { font-size: 18px; color: inherit; }
body.kv-std-page .kv-hp-empty {
    text-align: center; padding: 36px 20px; background: #fff;
    border: 1px dashed #e2e8f0; border-radius: 14px; margin-bottom: 14px;
}
body.kv-std-page .kv-hp-empty i { font-size: 30px; color: #94a3b8; display: block; margin-bottom: 10px; }
body.kv-std-page .kv-hp-empty .t { font-weight: 700; color: #0f172a; }
body.kv-std-page .kv-hp-empty .s { font-size: 14px; color: #64748b; margin-top: 4px; }

/* HOPIN tabwrap (radio-driven) — tighten for desktop; add bottom border + hover */
body.kv-std-page .kv-hp-tabwrap { margin-bottom: 20px; }
body.kv-std-page .kv-hp-tabbar {
    display: flex; gap: 4px; border-bottom: 1px solid #e6e8f0; margin-bottom: 14px; overflow-x: auto;
}
body.kv-std-page .kv-hp-tabbar label {
    padding: 10px 18px; font-size: 14px; font-weight: 600; color: #64748b;
    cursor: pointer; border-bottom: 2px solid transparent; white-space: nowrap;
    transition: color .15s ease, border-color .15s ease;
}
body.kv-std-page .kv-hp-tabbar label:hover { color: #334155; }
body.kv-std-page .kv-hp-tabwrap input[type="radio"] { display: none; }
body.kv-std-page .kv-hp-tabwrap input[type="radio"]:nth-of-type(1):checked ~ .kv-hp-tabbar label:nth-of-type(1),
body.kv-std-page .kv-hp-tabwrap input[type="radio"]:nth-of-type(2):checked ~ .kv-hp-tabbar label:nth-of-type(2),
body.kv-std-page .kv-hp-tabwrap input[type="radio"]:nth-of-type(3):checked ~ .kv-hp-tabbar label:nth-of-type(3) {
    color: #4338ca; border-bottom-color: #4338ca;
}
body.kv-std-page .kv-hp-panels > .kv-hp-panel { display: none; }
body.kv-std-page .kv-hp-tabwrap input[type="radio"]:nth-of-type(1):checked ~ .kv-hp-panels > .kv-hp-panel:nth-of-type(1),
body.kv-std-page .kv-hp-tabwrap input[type="radio"]:nth-of-type(2):checked ~ .kv-hp-panels > .kv-hp-panel:nth-of-type(2),
body.kv-std-page .kv-hp-tabwrap input[type="radio"]:nth-of-type(3):checked ~ .kv-hp-panels > .kv-hp-panel:nth-of-type(3) {
    display: block;
}

/* HOPIN sticky CTA shouldn't sit flush under the footer — give it a floor and a shadow */
body.kv-std-page .kv-hp-sticky-cta {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    width: auto; min-width: 220px; margin: 24px auto; padding: 12px 24px;
    position: static; box-shadow: 0 10px 24px -14px rgba(67, 56, 202, .4);
}

/* HOPIN hero stats cards (earnings, subscription) — centre, give them visible chrome */
body.kv-std-page .kv-hp-stat-hero {
    background: linear-gradient(135deg, #4338ca, #6366f1); color: #fff;
    border-radius: 16px; padding: 22px; text-align: center; margin-bottom: 14px;
}
body.kv-std-page .kv-hp-stat-hero .big { font-size: 2rem; font-weight: 800; line-height: 1.15; }
body.kv-std-page .kv-hp-stat-hero .lbl { font-size: 14px; opacity: .88; margin-top: 4px; }
body.kv-std-page .kv-hp-stat-two { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 20px; }
body.kv-std-page .kv-hp-stat-cell { background: #fff; border: 1px solid #e6e8f0; border-radius: 14px; padding: 16px; text-align: center; }
body.kv-std-page .kv-hp-stat-cell .n { font-size: 1.6rem; font-weight: 800; color: #0f172a; }
body.kv-std-page .kv-hp-stat-cell .l { font-size: 13px; color: #64748b; margin-top: 2px; }

/* HOPIN transaction rows */
body.kv-std-page .kv-hp-txn {
    display: flex; justify-content: space-between; align-items: center; gap: 12px;
    padding: 10px 0; border-top: 1px solid #f1f5f9;
}
body.kv-std-page .kv-hp-txn:first-child { border-top: 0; }
body.kv-std-page .kv-hp-txn .t-main { font-weight: 600; color: #0f172a; font-size: 14px; }
body.kv-std-page .kv-hp-txn .t-sub  { font-size: 12.5px; color: #64748b; }
body.kv-std-page .kv-hp-txn .t-amt  { font-weight: 700; color: #047857; }
body.kv-std-page .kv-hp-kv.total {
    display: flex; justify-content: space-between; align-items: center;
    padding: 10px 14px; background: #f8fafc; border-radius: 10px; margin-bottom: 10px;
    font-size: 14px;
}
body.kv-std-page .kv-hp-kv.total .k { color: #64748b; }
body.kv-std-page .kv-hp-kv.total .v { font-weight: 700; color: #0f172a; }

/* HOPIN profile menu rows */
body.kv-std-page .kv-hp-menu { background: #fff; border: 1px solid #e6e8f0; border-radius: 14px; margin-bottom: 14px; overflow: hidden; }
body.kv-std-page .kv-hp-menu a {
    display: flex; align-items: center; gap: 12px; padding: 14px 16px;
    color: #0f172a; text-decoration: none; font-weight: 500;
    border-top: 1px solid #f1f5f9;
}
body.kv-std-page .kv-hp-menu a:first-child { border-top: 0; }
body.kv-std-page .kv-hp-menu a:hover { background: #f8fafc; }
body.kv-std-page .kv-hp-menu a .ico {
    width: 36px; height: 36px; border-radius: 10px;
    background: rgba(99, 56, 246, .09); color: #4338ca;
    display: inline-flex; align-items: center; justify-content: center;
}
body.kv-std-page .kv-hp-menu a .chev { margin-left: auto; color: #94a3b8; font-size: 13px; }
body.kv-std-page .kv-hp-menu a.danger .ico { background: rgba(239, 68, 68, .1); color: #b91c1c; }
body.kv-std-page .kv-hp-menu a.danger       { color: #b91c1c; }

/* HOPIN profile header */
body.kv-std-page .kv-hp-profile-hd { text-align: center; margin: 16px 0 24px; }
body.kv-std-page .kv-hp-avatar-lg {
    width: 72px; height: 72px; border-radius: 50%;
    background: linear-gradient(135deg, #4338ca, #6366f1); color: #fff;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 28px; font-weight: 700; overflow: hidden;
}
body.kv-std-page .kv-hp-avatar-lg img { width: 100%; height: 100%; object-fit: cover; }
body.kv-std-page .kv-hp-profile-hd .nm { font-size: 1.25rem; font-weight: 800; color: #0f172a; margin-top: 10px; }
body.kv-std-page .kv-hp-profile-hd .sub { font-size: 14px; color: #64748b; }

/* HOPIN card-head: avatar + title row */
body.kv-std-page .kv-hp-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
body.kv-std-page .kv-hp-card-head.mb-0 { margin-bottom: 0; }
body.kv-std-page .kv-hp-card-head.mb-2 { margin-bottom: 10px; }
body.kv-std-page .kv-hp-card-head .who { display: flex; gap: 10px; align-items: center; }
body.kv-std-page .kv-hp-card-head .who .nm { font-weight: 700; color: #0f172a; font-size: 14.5px; }
body.kv-std-page .kv-hp-avatar {
    width: 40px; height: 40px; border-radius: 50%;
    background: rgba(99, 56, 246, .09); color: #4338ca;
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 15px; flex: none;
}

/* HOPIN route */
body.kv-std-page .kv-hp-route { display: flex; gap: 10px; margin-top: 10px; }
body.kv-std-page .kv-hp-route-rail { display: flex; flex-direction: column; align-items: center; padding-top: 4px; }
body.kv-std-page .kv-hp-route-rail .dot { width: 9px; height: 9px; border-radius: 50%; }
body.kv-std-page .kv-hp-route-rail .dot.origin { background: #4338ca; }
body.kv-std-page .kv-hp-route-rail .dot.dest   { background: #ef4444; }
body.kv-std-page .kv-hp-route-rail .line { width: 2px; flex: 1; background: #cbd5e1; min-height: 20px; margin: 2px 0; }
body.kv-std-page .kv-hp-route-text { flex: 1; }
body.kv-std-page .kv-hp-route-text .addr { font-size: 14px; color: #0f172a; padding: 2px 0; }

/* HOPIN card foot */
body.kv-std-page .kv-hp-card-foot { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-top: 12px; padding-top: 10px; border-top: 1px solid #f1f5f9; }
body.kv-std-page .kv-hp-card-foot .price { font-size: 14px; color: #0f172a; }
body.kv-std-page .kv-hp-card-foot .price b { font-weight: 700; }
body.kv-std-page .kv-hp-booked { font-size: 12.5px; color: #64748b; }

/* HOPIN card actions */
body.kv-std-page .kv-hp-card-actions { display: flex; gap: 8px; margin-top: 12px; }
body.kv-std-page .kv-hp-btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    font-weight: 600; font-size: 14px; padding: 9px 16px; border-radius: 10px;
    border: 1px solid transparent; cursor: pointer; transition: filter .15s ease;
}
body.kv-std-page .kv-hp-btn:hover { filter: brightness(1.05); }
body.kv-std-page .kv-hp-btn-primary { background: #4338ca; color: #fff; }
body.kv-std-page .kv-hp-btn-ghost   { background: #fff; border-color: #e6e8f0; color: #334155; }
body.kv-std-page .kv-hp-btn-outline { background: #fff; border-color: #4338ca; color: #4338ca; }
body.kv-std-page .kv-hp-btn-lg      { padding: 12px 22px; font-size: 15px; }
body.kv-std-page .kv-hp-btn-inline  { padding: 6px 12px; font-size: 13px; }

/* HOPIN fields (forms) */
body.kv-std-page .kv-hp-field { margin-bottom: 14px; }
body.kv-std-page .kv-hp-field > label { display: block; font-weight: 600; font-size: 13.5px; color: #334155; margin-bottom: 6px; }
body.kv-std-page .kv-hp-input-icon { position: relative; }
body.kv-std-page .kv-hp-input-icon .lead { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: #94a3b8; pointer-events: none; }
body.kv-std-page .kv-hp-input-icon .lead.origin { color: #4338ca; }
body.kv-std-page .kv-hp-input-icon .lead.dest   { color: #ef4444; }
body.kv-std-page .kv-hp-input-icon .form-control,
body.kv-std-page .kv-hp-input-icon .form-select { padding-left: 36px; }
body.kv-std-page .kv-hp-seatinfo { display: inline-flex; align-items: center; gap: 8px; color: #64748b; font-size: 14px; }
body.kv-std-page .kv-hp-seatinfo i { color: #4338ca; }
body.kv-std-page .kv-hp-when { font-size: 13px; color: #64748b; }

/* HOPIN plan cards */
body.kv-std-page .kv-hp-plan {
    background: #fff; border: 1px solid #e6e8f0; border-radius: 14px;
    padding: 20px; text-align: center; margin-bottom: 12px;
}
body.kv-std-page .kv-hp-plan.current { border-color: #4338ca; box-shadow: 0 0 0 3px rgba(67,56,202,.08); }
body.kv-std-page .kv-hp-plan .p-name  { font-weight: 800; color: #0f172a; font-size: 1.15rem; }
body.kv-std-page .kv-hp-plan .p-cycle { font-size: 13px; color: #64748b; text-transform: capitalize; margin-top: 2px; }
body.kv-std-page .kv-hp-plan .p-price { font-size: 1.6rem; font-weight: 800; color: #4338ca; margin: 10px 0; }
body.kv-std-page .kv-hp-plan .p-price small { font-size: 13px; color: #64748b; font-weight: 500; }

/* HOPIN tight note (dense list items) */
body.kv-std-page .kv-hp-tight { margin-bottom: 10px; }
