/* =============================================================
   combi-sensor-chart.css
   Paste this block into your main stylesheet (style.css).
   Uses the Yuverta palette already defined in :root.
   ============================================================= */

/* ── Page wrapper ──────────────────────────────────────────── */
.combi-page .dash-main {
    padding: 24px 28px 48px;
    max-width: 1600px;
    margin: 0 auto;
}

.combi-page .dash-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}

.combi-page .dash-title {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--yuv-donkerblauw);
    letter-spacing: -0.01em;
}

/* ── Add Chart button ─────────────────────────────────────── */
.combi-page .btn-add-chart {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 18px;
    background: linear-gradient(135deg, var(--yuv-donkerblauw), #00107a);
    border: none;
    color: #fff;
    font-size: 13px;
    font-weight: 500;
    border-radius: 999px;
    cursor: pointer;
    box-shadow: 0 6px 16px rgba(0,6,68,.25);
    transition: box-shadow .18s, transform .12s;
}

.combi-page .btn-add-chart:hover {
    box-shadow: 0 8px 20px rgba(0,6,68,.35);
    transform: translateY(-1px);
}

/* ── Drag-grid ────────────────────────────────────────────── */
/*
   The grid uses CSS Grid with a 2-column layout.
   Each card has a data-span attribute (1 = half-width, 2 = full-width).
   When dragged to the bottom row alone it becomes span-2 automatically.
*/
.combi-page #chartsWrapper {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    align-items: start;
}

/* A card that occupies the full row */
.combi-page .chart-card.span-2 {
    grid-column: 1 / -1;
}

/* ── Chart card ───────────────────────────────────────────── */
.combi-page .chart-card {
    background: var(--bg-card, #fff);
    border-radius: var(--radius-lg, 18px);
    border: 1px solid rgba(255,255,255,.6);
    box-shadow: var(--shadow-card, 0 10px 25px rgba(15,23,42,.08));
    display: flex;
    flex-direction: column;
    animation: ccFadeUp .3s ease both;
    position: relative;
    overflow: visible;
}

@keyframes ccFadeUp {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Drag handle strip at the top of every card */
.combi-page .card-drag-handle {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 6px 14px 4px;
    cursor: grab;
    border-bottom: 1px solid var(--border-subtle, #e5e7eb);
    user-select: none;
    background: var(--bg-card-soft, #f9fafb);
    border-radius: var(--radius-lg, 18px) var(--radius-lg, 18px) 0 0;
}

.combi-page .card-drag-handle:active { cursor: grabbing; }

.combi-page .drag-dots {
    display: grid;
    grid-template-columns: repeat(3, 4px);
    grid-template-rows: repeat(2, 4px);
    gap: 3px;
    opacity: .35;
}

.combi-page .drag-dots span {
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--yuv-donkerblauw, #000644);
    display: block;
}

.combi-page .card-drag-handle .card-actions {
    display: flex;
    gap: 6px;
}

.combi-page .btn-card-remove,
.combi-page .btn-card-expand {
    background: none;
    border: none;
    cursor: pointer;
    line-height: 1;
    padding: 2px 4px;
    border-radius: 4px;
    opacity: .45;
    transition: opacity .15s;
}

.combi-page .btn-card-remove  { color: var(--yuv-rood, #FF2F00); font-size: 17px; }
.combi-page .btn-card-expand  { color: var(--yuv-donkerblauw, #000644); }

.combi-page .btn-card-remove:hover,
.combi-page .btn-card-expand:hover { opacity: 1; }

/* Expand button active state when card is span-2 */
.combi-page .chart-card.span-2 .btn-card-expand { opacity: 1; }

/* While dragging */
.combi-page .chart-card.dragging {
    opacity: .5;
    box-shadow: 0 16px 40px rgba(0,6,68,.2);
    outline: 2px dashed var(--yuv-donkerblauw, #000644);
}

/* Drop target highlight */
.combi-page .chart-card.drag-over {
    outline: 2px solid var(--yuv-lime, #A7FF00);
    background: rgba(167,255,0,.06);
}

/* ── Card toolbar (selects row) ───────────────────────────── */
.combi-page .chart-toolbar {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    /* No border-bottom — the progress bar below acts as the divider */
    flex-wrap: wrap;
}

.combi-page .chart-toolbar .topic-wrap {
    position: relative;
    flex: 1;
    min-width: 160px;
}

/* Styled selects that match global form-select but scoped */
.combi-page .chart-toolbar select {
    width: 100%;
    background: var(--bg-card-soft, #f9fafb);
    border: 1px solid var(--border-subtle, #e5e7eb);
    color: var(--text-main, #111827);
    font-size: 13px;
    padding: 6px 28px 6px 10px;
    border-radius: 999px;
    outline: none;
    appearance: none;
    -webkit-appearance: none;
    transition: border-color .18s, box-shadow .18s;
    cursor: pointer;
}

.combi-page .chart-toolbar select:focus {
    border-color: var(--yuv-donkerblauw, #000644);
    box-shadow: 0 0 0 2px rgba(167,255,0,.25);
}

.combi-page .select-wrap {
    position: relative;
}

.combi-page .select-wrap::after {
    content: '';
    pointer-events: none;
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    border: 4px solid transparent;
    border-top-color: var(--text-muted, #6b7280);
    margin-top: 2px;
}

.combi-page .range-wrap {
    flex-shrink: 0;
    width: 160px;
}

/* ── Sensor dropdown panel ────────────────────────────────── */
.combi-page .sensor-panel {
    display: none;
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    background: var(--bg-card, #fff);
    color: var(--text-main, #111827);
    border: 1px solid var(--border-subtle, #e5e7eb);
    border-radius: var(--radius-sm, 10px);
    z-index: 300;
    max-height: 230px;
    overflow-y: auto;
    box-shadow: 0 6px 20px rgba(15,23,42,.1);
}

.combi-page .sensor-panel::-webkit-scrollbar { width: 4px; }
.combi-page .sensor-panel::-webkit-scrollbar-track { background: transparent; }
.combi-page .sensor-panel::-webkit-scrollbar-thumb { background: #00194b; border-radius: 2px; }

.combi-page .sensor-search {
    width: 100%;
    background: var(--bg-card-soft, #f9fafb);
    border: none;
    border-bottom: 1px solid var(--border-subtle, #e5e7eb);
    color: var(--text-main, #111827);
    font-size: 13px;
    padding: 8px 12px;
    outline: none;
    border-radius: var(--radius-sm, 10px) var(--radius-sm, 10px) 0 0;
}

.combi-page .sensor-search::placeholder { color: var(--text-muted, #6b7280); }

.combi-page .cc-sensor-list { padding: 4px 0; }

.combi-page .sensor-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 12px;
    cursor: pointer;
    transition: background .12s;
    user-select: none;
}

.combi-page .sensor-item:hover { background: var(--bg-card-soft, #f9fafb); }

.combi-page .sensor-item input[type=checkbox] {
    accent-color: var(--yuv-donkerblauw, #000644);
    width: 14px;
    height: 14px;
    flex-shrink: 0;
}

.combi-page .sensor-item label {
    cursor: pointer;
    font-size: 13px;
    color: var(--text-main, #111827);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.combi-page .sensor-empty-msg {
    padding: 12px 14px;
    font-size: 12px;
    color: var(--text-muted, #6b7280);
}

/* ── Sensor badges ────────────────────────────────────────── */
.combi-page .sensor-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    padding: 8px 16px 0;
}

.combi-page .sensor-badges:empty { padding: 0; }

.combi-page .badge-sensor {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    background: rgba(0,6,68,.08);
    border: 1px solid rgba(0,6,68,.2);
    border-radius: 999px;
    font-size: 11px;
    font-weight: 500;
    color: var(--yuv-donkerblauw, #000644);
    animation: ccBadgeIn .15s ease;
}

@keyframes ccBadgeIn { from { opacity:0; scale:.9; } to { opacity:1; scale:1; } }

.combi-page .badge-sensor .remove {
    cursor: pointer;
    opacity: .5;
    transition: opacity .15s;
    font-size: 14px;
    line-height: 1;
}

.combi-page .badge-sensor .remove:hover { opacity: 1; color: var(--yuv-rood, #FF2F00); }

/* ── Chart container & loading overlay ───────────────────── */
.combi-page .chart-container {
    position: relative;
    padding: 8px 4px 4px;
    min-height: 300px;
}

/* ── Progress bar loading indicator ─────────────────────────── */
/* Replaces the chart-toolbar bottom border — sits flush below the toolbar */
.combi-page .chart-progress-bar {
    display: block;
    width: 100%;
    height: 3px;
    background: var(--border-subtle, #e5e7eb);
    overflow: hidden;
    flex-shrink: 0;
    /* No bottom border on toolbar needed — bar IS the divider */
}

.combi-page .chart-progress-fill {
    height: 100%;
    width: 0%;
    background: linear-gradient(
        90deg,
        var(--yuv-donkerblauw, #000644) 0%,
        var(--yuv-lime, #A7FF00) 100%
    );
    border-radius: 0 2px 2px 0;
    will-change: width, opacity;
}

/* ── Empty state ──────────────────────────────────────────── */
.combi-page .chart-empty {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: var(--text-muted, #6b7280);
    font-size: 13px;
    pointer-events: none;
}

.combi-page .chart-empty svg { opacity: .25; }

/* ── Dark mode overrides ──────────────────────────────────── */
body.dark .combi-page .chart-card {
    background: var(--bg-card) !important;
    border-color: var(--border-color) !important;
}

body.dark .combi-page .card-drag-handle {
    background: var(--bg-card-soft) !important;
    border-color: var(--border-color) !important;
}

body.dark .combi-page .chart-toolbar select {
    background: var(--input-bg) !important;
    color: var(--input-text) !important;
    border-color: var(--border-color) !important;
}

body.dark .combi-page .badge-sensor {
    background: rgba(167,255,0,.1);
    border-color: rgba(167,255,0,.25);
    color: var(--yuv-lime);
}

body.dark .combi-page .chart-progress-bar {
    background: rgba(255,255,255,.07);
}
body.dark .combi-page .chart-progress-fill {
    background: linear-gradient(
        90deg,
        var(--yuv-lila, #B8A1FF) 0%,
        var(--yuv-lime, #A7FF00) 100%
    );
}

/* ── Responsive ───────────────────────────────────────────── */
@media (max-width: 860px) {
    .combi-page #chartsWrapper {
        grid-template-columns: 1fr;
    }

    .combi-page .chart-card.span-2 {
        grid-column: 1;
    }
}