/*
 * Dealerportaal in de huisstijl van data.tex.vision:
 * - kopbalk: de teal gradiënt van .logo_main_menu (style.css) met gele btn-warning-knoppen
 * - kaarten, tegels en tabellen: dezelfde maten en kleuren als het dashboard
 *   (.dash-tile / .plan-card in pages/home.php)
 * - login: de teal achtergrond en .card-signin van pages/login.php
 * Bootstrap 4.3.1 en Font Awesome 5.6.3 komen van dezelfde CDN's als index.php.
 */
:root {
    --tv-teal-dark: #1f4d5d;
    --tv-teal: #2f748d;
    --tv-link: #00b9e9;
    --tv-ink: #0f172a;
    --tv-muted: #64748b;
    --tv-line: #e6ebf3;
    --tv-line-soft: #eef2f7;
    --tv-strip: #f8fafc;
    --tv-shadow: 0 10px 26px rgba(15, 23, 42, 0.06);
    --tv-done: #16a34a;
    --tv-done-bg: #ecfdf5;
    --tv-done-ink: #047857;
    --tv-todo: #f59e0b;
    --tv-todo-bg: #fffbeb;
    --tv-todo-ink: #b45309;
}

body {
    font-size: 0.875rem;
    color: var(--tv-ink);
    background: #fff;
    background:
        radial-gradient(1200px 400px at 100% -10%, rgba(99, 102, 241, 0.06), transparent 60%),
        radial-gradient(900px 360px at -10% 0%, rgba(13, 148, 136, 0.06), transparent 55%),
        #fff;
    min-height: 100vh;
}
a { color: var(--tv-teal); transition: color .2s; }
a:hover { color: var(--tv-teal-dark); }

/* ---- Kopbalk ---- */
.tv-top {
    background: var(--tv-teal);
    background-image: linear-gradient(to top, var(--tv-teal-dark) 0%, var(--tv-teal) 100%);
    border-bottom: 1px solid #fff;
}
.tv-top__inner {
    max-width: 1300px;
    width: 95%;
    margin: 0 auto;
    padding: 1.1rem 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.tv-top__logo { display: inline-flex; align-items: baseline; gap: .6rem; color: #fff; text-decoration: none; }
.tv-top__logo:hover { color: #fff; text-decoration: none; }
/* logo_dark.svg is zwart; op de teal balk wit maken i.p.v. een tweede logobestand te zoeken. */
.tv-top__logo img, .tv-auth__logo img { filter: brightness(0) invert(1); }
.tv-top__logo span { color: #9fe7f5; font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.tv-top__nav { display: flex; gap: .3rem; flex-wrap: wrap; }
.tv-top__nav .btn { font-size: .8rem; font-weight: 600; }
.tv-top__nav .btn i + .tv-top__label { margin-left: .4rem; }
.tv-top__nav .btn-warning.active { background: #fff; border-color: #fff; color: var(--tv-teal-dark); }
@media (max-width: 575.98px) {
    .tv-top__label { display: none; }
}

/* ---- Pagina ---- */
.tv-wrap { max-width: 1300px; width: 95%; margin: 0 auto; padding: 2rem 0 4rem; }
.tv-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.25rem; }
.tv-head h1 { font-size: 1.85rem; font-weight: 800; letter-spacing: -0.02em; margin: 0; }
.tv-head p { color: var(--tv-muted); margin: .3rem 0 0; }
.tv-code { font-weight: 800; font-variant-numeric: tabular-nums; color: var(--tv-muted); }
.tv-empty { padding: 1.5rem; color: var(--tv-muted); }

/* ---- Kaarten (zoals .plan-card) ---- */
.tv-card {
    background: #fff;
    border: 1px solid var(--tv-line);
    border-radius: 20px;
    box-shadow: var(--tv-shadow);
    overflow: hidden;
    margin-bottom: 1.25rem;
}
.tv-card--narrow { max-width: 560px; }
.tv-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .9rem 1.5rem;
    background: var(--tv-strip);
    border-bottom: 1px solid var(--tv-line-soft);
    font-size: .95rem;
}
.tv-card__body { padding: 1.25rem 1.5rem; }
.tv-line {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .7rem 1.5rem;
    border-top: 1px solid var(--tv-strip);
    color: var(--tv-ink);
}
.tv-line:hover { background: var(--tv-strip); color: var(--tv-ink); text-decoration: none; }
.tv-line__main { flex: 1; font-weight: 600; }
.tv-finished summary { padding: .9rem 1.5rem; font-weight: 700; cursor: pointer; background: var(--tv-strip); }

.tv-badge {
    display: inline-flex; align-items: center; gap: .3rem;
    font-size: .75rem; font-weight: 700;
    padding: .15rem .55rem; border-radius: 999px;
    background: #f1f5f9; color: #475569; white-space: nowrap;
}
.tv-badge--done { background: var(--tv-done-bg); color: var(--tv-done-ink); }
.tv-badge--todo { background: var(--tv-todo-bg); color: var(--tv-todo-ink); }

/* ---- Tegels (zoals .dash-tile) ---- */
.tv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1.25rem; }
.tv-tile {
    --c1: var(--tv-teal);
    --c2: var(--tv-link);
    position: relative;
    display: flex; flex-direction: column; gap: .35rem;
    padding: 1.4rem;
    border-radius: 20px;
    background: #fff;
    border: 1px solid var(--tv-line);
    box-shadow: var(--tv-shadow);
    color: var(--tv-ink);
    overflow: hidden;
    transition: transform .18s ease, box-shadow .18s ease;
}
.tv-tile::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 5px; background: linear-gradient(90deg, var(--c1), var(--c2)); }
.tv-tile:hover { color: var(--tv-ink); text-decoration: none; transform: translateY(-4px); box-shadow: 0 20px 40px rgba(47, 116, 141, .18), 0 8px 18px rgba(15, 23, 42, .08); }
.tv-tile__icon {
    width: 48px; height: 48px; border-radius: 14px;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.3rem; font-weight: 800; color: #fff;
    background: linear-gradient(135deg, var(--c1), var(--c2));
    margin-bottom: .5rem;
}
.tv-tile__title { font-size: 1.15rem; font-weight: 800; letter-spacing: -0.01em; }
.tv-tile__desc { color: var(--tv-muted); font-size: .85rem; }
.tv-tile__arrow { margin-top: .5rem; font-size: .8rem; font-weight: 700; color: var(--c1); }

/* ---- Tabellen ---- */
.tv-table { width: 100%; border-collapse: collapse; }
.tv-table th {
    background: var(--tv-strip);
    color: var(--tv-muted);
    font-size: .7rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
    padding: .75rem 1rem;
    border-bottom: 1px solid var(--tv-line-soft);
    white-space: nowrap;
}
.tv-table td { padding: .6rem 1rem; border-bottom: 1px solid #f1f5f9; vertical-align: middle; }
.tv-table tbody tr:last-child td { border-bottom: 0; }
.tv-table__name a { font-weight: 700; color: var(--tv-ink); }
.tv-table__name small { display: block; color: var(--tv-muted); }

/* Planning: kolommen met statusblokjes, gecentreerd en smal. */
.tv-table--steps { min-width: 640px; }
.tv-table--steps tbody tr:hover { background: #fbfcfe; }
.tv-table--steps th:not(:first-child),
.tv-table--steps td:not(:first-child) { text-align: center; width: 1%; }

/* Ordercontrole: één blok per design, dunne lijn tussen modellen. */
.tv-table--review tbody { border-top: 2px solid var(--tv-line); }
.tv-table--review tr.tv-table__model-start td:not(.tv-table__design) { border-top: 1px solid var(--tv-line-soft); }
.tv-table--review td { padding: .4rem 1rem; }
.tv-table__design { width: 150px; vertical-align: top !important; border-right: 1px solid var(--tv-line-soft); }
.tv-table__design small { display: block; }
.tv-thumb { display: block; width: 110px; height: 88px; object-fit: contain; background: var(--tv-strip); border-radius: 10px; margin-bottom: .35rem; }
.tv-thumb-btn { position: relative; display: block; padding: 0; border: 0; background: none; cursor: zoom-in; margin-bottom: .35rem; }
.tv-thumb-btn .tv-thumb { margin-bottom: 0; transition: box-shadow .15s ease; }
.tv-thumb-btn:hover .tv-thumb, .tv-thumb-btn:focus .tv-thumb { box-shadow: 0 0 0 3px rgba(47, 116, 141, .35); }
.tv-thumb--empty { display: flex; align-items: center; justify-content: center; color: #94a3b8; font-size: 1.6rem; }
.tv-thumb-btn__hint {
    position: absolute; right: 4px; bottom: 4px;
    font-size: .65rem; font-weight: 700; color: #fff;
    background: rgba(15, 23, 42, .65); border-radius: 999px; padding: .1rem .4rem;
}

/* ---- Designvenster ---- */
body.tv-noscroll { overflow: hidden; }
.tv-lightbox {
    position: fixed; inset: 0; z-index: 1050;
    background: rgba(15, 23, 42, .72);
    display: flex; align-items: center; justify-content: center;
    padding: 1rem;
}
.tv-lightbox[hidden] { display: none; }
.tv-lightbox__panel {
    background: #fff; border-radius: 20px; overflow: hidden;
    width: min(1000px, 100%); max-height: 100%;
    display: flex; flex-direction: column;
    box-shadow: 0 24px 60px rgba(15, 23, 42, .35);
}
.tv-lightbox__head {
    display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap;
    padding: .75rem 1rem .75rem 1.5rem; background: var(--tv-strip); border-bottom: 1px solid var(--tv-line-soft);
}
.tv-lightbox__tabs { display: flex; gap: .35rem; }
.tv-lightbox__tabs .btn { white-space: nowrap; }
.tv-lightbox__tabs .btn.btn-outline-secondary.active,
.tv-lightbox__tabs .btn.btn-outline-secondary:not(:disabled):not(.disabled).active { background: var(--tv-teal); border-color: var(--tv-teal); color: #fff; }
.tv-lightbox__panel, .tv-lightbox__head > strong { min-width: 0; }
@media (max-width: 575.98px) {
    .tv-lightbox { padding: .5rem; }
    .tv-lightbox__head { padding: .6rem .75rem; flex-wrap: nowrap; }
    .tv-lightbox__head > strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .tv-lb-label { display: none; }
}
.tv-lightbox__stage { flex: 1; min-height: 40vh; display: flex; align-items: center; justify-content: center; background: #f5f7fa; }
.tv-lightbox__stage img { max-width: 100%; max-height: 70vh; object-fit: contain; }
.tv-lightbox__stage iframe { width: 100%; height: 70vh; border: 0; background: #fff; }
.tv-lightbox__strip { display: flex; gap: .5rem; padding: .75rem 1rem; overflow-x: auto; }
.tv-lightbox__strip:empty { display: none; }
.tv-lightbox__shot { flex: none; padding: 0; border: 2px solid transparent; border-radius: 10px; background: var(--tv-strip); cursor: pointer; }
.tv-lightbox__shot img { display: block; width: 72px; height: 58px; object-fit: contain; border-radius: 8px; }
.tv-lightbox__shot.active { border-color: var(--tv-teal); }

@media (max-width: 575.98px) {
    .tv-table__design { width: 80px; }
    .tv-thumb { width: 60px; height: 48px; }
    .tv-table--review td { padding: .4rem .5rem; }
    .tv-head h1 { font-size: 1.45rem; }
}

/* ---- Statusblokjes ---- */
.tv-step {
    display: inline-flex; align-items: center; justify-content: center; gap: .3rem;
    min-width: 30px; height: 30px; padding: 0 .4rem;
    border-radius: 8px;
    font-size: .8rem; font-weight: 700;
    vertical-align: middle;
}
.tv-step--done { background: var(--tv-done); color: #fff; }
.tv-step--todo { background: var(--tv-todo); color: #fff; }
.tv-step--part { background: var(--tv-todo-bg); color: var(--tv-todo-ink); border: 1px solid #fcd34d; }
.tv-step--date { background: #e0f2fe; color: #075985; }
.tv-step--wait { background: #eef2f7; }
/* In productie: draaiend tandwiel. Shipped: vrachtwagentje dat zachtjes rijdt. */
.tv-step--prod { background: #e0f2fe; color: #0369a1; font-size: .95rem; }
.tv-step--ship { background: #dbeafe; color: #1d4ed8; }
.tv-step--ship i { animation: tv-drive 1.6s ease-in-out infinite; }
@keyframes tv-drive { 0%, 100% { transform: translateX(-2px); } 50% { transform: translateX(2px); } }
@media (prefers-reduced-motion: reduce) {
    .tv-step--prod i, .tv-step--ship i { animation: none; }
}
a.tv-step:hover { color: #fff; text-decoration: none; filter: brightness(1.08); }
a.tv-step--todo { box-shadow: 0 0 0 3px rgba(245, 158, 11, .2); }
.tv-step--wide { padding: 0 .55rem; white-space: nowrap; }
.tv-legend { display: flex; gap: 1rem; color: var(--tv-muted); font-size: .8rem; }
.tv-legend .tv-step { min-width: 18px; height: 18px; font-size: .6rem; border-radius: 5px; margin-right: .2rem; }

/* ---- Bevestigen ---- */
.tv-approve { padding: 1.25rem 1.5rem; border-top: 1px solid var(--tv-line-soft); }
.tv-card__body .tv-approve { padding: 1.25rem 0 0; margin-top: 1.25rem; }
.tv-approved { padding: 1rem 1.5rem; color: var(--tv-done-ink); font-weight: 700; border-top: 1px solid var(--tv-line-soft); }
.tv-card__body .tv-approved { padding: 1rem 0 0; margin-top: 1rem; }
.btn-primary { background: var(--tv-teal); border-color: var(--tv-teal); }
.btn-primary:hover, .btn-primary:focus { background: var(--tv-teal-dark); border-color: var(--tv-teal-dark); }
.custom-control-input:checked ~ .custom-control-label::before { background: var(--tv-teal); border-color: var(--tv-teal); }

/* ---- Login (zoals pages/login.php) ---- */
body.tv-auth { background: var(--tv-teal); background-image: linear-gradient(to top, var(--tv-teal-dark) 0%, var(--tv-teal) 100%); }
.tv-auth__logo { text-align: center; margin-top: 3rem; }
.card-signin { border: 0; border-radius: 1rem; box-shadow: 0 .5rem 1rem 0 rgba(0, 0, 0, .1); }
.card-signin .card-body { padding: 2rem; }
.card-signin .card-title { margin-bottom: 1.5rem; font-weight: 300; font-size: 1.5rem; }
.form-signin .form-control { border-radius: 2rem; padding: .75rem 1.25rem; height: auto; }
.form-signin .btn { font-size: 80%; border-radius: 5rem; letter-spacing: .1rem; font-weight: bold; padding: 1rem; }
