/* ==========================================================================
   RealTech ERP — "Real estate" theme: deep navy, frosted-glass panels, gold.
   Loaded by base.html.twig when the module declares `theme: realestate`
   (config/packages/twig.yaml). It redefines the tokens of app.css and only
   overrides what tokens can't reach; every rule is scoped to
   [data-theme="realestate"], so the Retail theme is untouched.

   Domain colours re-read for real estate:
   stock = properties (gold), till = transactions (emerald), client = contacts (periwinkle).
   ========================================================================== */

/*
 * Self-hosted fonts (fontsource 5.3.0 variable fonts, SIL OFL 1.1), latin and
 * latin-ext subsets only: unicode-range makes the browser fetch latin-ext only
 * when such letters are displayed. Montserrat echoes the logo lettering.
 */
@font-face {
    font-family: 'Plus Jakarta Sans';
    font-style: normal;
    font-display: swap;
    font-weight: 200 800;
    src: url("../../fonts/plus-jakarta-sans-latin-ext-wght-normal-w14NvZZ.woff2") format('woff2-variations');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Plus Jakarta Sans';
    font-style: normal;
    font-display: swap;
    font-weight: 200 800;
    src: url("../../fonts/plus-jakarta-sans-latin-wght-normal-ZHdaFJ8.woff2") format('woff2-variations');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-display: swap;
    font-weight: 100 900;
    src: url("../../fonts/montserrat-latin-ext-wght-normal-K30JCnd.woff2") format('woff2-variations');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-display: swap;
    font-weight: 100 900;
    src: url("../../fonts/montserrat-latin-wght-normal-LaWOCQv.woff2") format('woff2-variations');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root[data-theme="realestate"] {
    color-scheme: dark;

    /* Domain colours (hex: chart_controller derives translucent fills from them) */
    --till: #10b981;
    --till-hover: #059669;
    --till-soft: rgba(16, 185, 129, .14);
    --stock: #d6b25e;
    --stock-hover: #c09a45;
    --stock-soft: rgba(214, 178, 94, .14);
    --client: #7b96e8;
    --client-hover: #6280dc;
    --client-soft: rgba(123, 150, 232, .15);

    /* Brand: the logo's navy and gold */
    --navy: #13235b;
    --gold: #d6b25e;
    --brand: #d6b25e;
    --brand-hover: #e8c879;
    --brand-soft: rgba(214, 178, 94, .14);
    --accent: #7b96e8;
    --danger: #f43f5e;
    --danger-hover: #e11d48;
    --danger-soft: rgba(244, 63, 94, .15);
    --warning: #f59e0b;
    --warning-soft: rgba(245, 158, 11, .15);
    --violet: #8b5cf6;
    --berry: #ec4899;
    --slate: #24335f;
    --slate-hover: #2f4177;

    /* Neutrals, navy-tinted */
    --nav: rgba(7, 14, 38, .92);
    --nav-hover: rgba(160, 176, 220, .08);
    --nav-active: rgba(214, 178, 94, .12);
    --nav-text: #9aa6c4;
    --bg: #040a1c;
    --surface: rgba(19, 35, 91, .32);
    --surface-alt: rgba(7, 14, 38, .55);
    --surface-solid: #0a1430;
    --surface-hover: rgba(36, 51, 95, .7);
    --row-hover: rgba(160, 176, 220, .05);
    --border: rgba(255, 255, 255, .08);
    --input-border: rgba(160, 176, 220, .22);
    --focus-ring: rgba(214, 178, 94, .25);
    --text: #eef2fb;
    --muted: #9aa6c4;

    --font: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
    --font-title: 'Montserrat', var(--font);

    --radius: 14px;
    --radius-sm: 8px;
    --shadow: inset 0 1px 0 rgba(255, 255, 255, .04), 0 8px 24px rgba(2, 6, 20, .4);
    --shadow-lg: 0 24px 60px rgba(2, 6, 20, .7);
    --glass: blur(12px) saturate(140%);
    --gradient-gold: linear-gradient(120deg, #b8892d, #e8c36a 55%, #c9a646);
    --gradient-gold-hover: linear-gradient(120deg, #c9993a, #f2d27f 55%, #d6b25e);
    --gradient-logo: linear-gradient(135deg, #1c3277 15%, #b8892d 85%);

    scrollbar-color: #24335f transparent;
    scrollbar-width: thin;
}

/* ---------- Base ----------------------------------------------------------- */

[data-theme="realestate"] body {
    background:
        radial-gradient(1100px 600px at 100% -10%, rgba(214, 178, 94, .08), transparent 60%),
        radial-gradient(900px 500px at -10% 110%, rgba(37, 64, 160, .22), transparent 60%),
        var(--bg);
    background-attachment: fixed;
    -webkit-font-smoothing: antialiased;
}
[data-theme="realestate"] :is(h1, h2, h3) { letter-spacing: -.01em; }
[data-theme="realestate"] h1 { font-weight: 700; }
[data-theme="realestate"] h2, [data-theme="realestate"] h3 { font-weight: 600; }

/* ---------- App shell ------------------------------------------------------ */

[data-theme="realestate"] .sidebar {
    border-right: 1px solid var(--border);
    backdrop-filter: var(--glass);
}
[data-theme="realestate"] .sidebar__brand {
    font-weight: 700; letter-spacing: .04em; text-transform: uppercase;
    border-bottom-color: var(--border);
}
[data-theme="realestate"] .sidebar__brand > div > span {
    background: var(--gradient-gold); -webkit-background-clip: text; background-clip: text; color: transparent;
    font-weight: 700; letter-spacing: .08em;
}
[data-theme="realestate"] .sidebar__logo {
    background: var(--gradient-logo);
    box-shadow: 0 8px 20px rgba(214, 178, 94, .18);
    border-radius: 10px;
}
[data-theme="realestate"] .nav__group { color: #66739a; }
[data-theme="realestate"] .nav__link:hover { color: #f8fafc; }
[data-theme="realestate"] .nav__link.is-active { color: #f8fafc; box-shadow: inset 3px 0 0 var(--gold); }
[data-theme="realestate"] .nav__link.is-active .icon { color: var(--brand-hover); }
[data-theme="realestate"] .nav__link--till .icon { color: #34d399; }
[data-theme="realestate"] .nav__link--stock .icon { color: var(--brand-hover); }
[data-theme="realestate"] .nav__link--client .icon { color: #a3b5f0; }

[data-theme="realestate"] .topbar {
    background: rgba(7, 14, 38, .75);
    backdrop-filter: var(--glass);
}
[data-theme="realestate"] .avatar { background: var(--gradient-gold); color: var(--navy); }

/* ---------- Cards ---------------------------------------------------------- */

[data-theme="realestate"] .card { backdrop-filter: var(--glass); }
[data-theme="realestate"] .kpi__icon { border: 1px solid var(--border); }
[data-theme="realestate"] .kpi__icon--warning { color: #fbbf24; }
[data-theme="realestate"] .kpi__value { font-weight: 700; letter-spacing: -.02em; }
[data-theme="realestate"] .trend--up { color: #34d399; }
[data-theme="realestate"] .trend--down { color: #fb7185; }
[data-theme="realestate"] .bar { background: rgba(160, 176, 220, .12); }
[data-theme="realestate"] .bar > span { background: var(--gradient-gold); }

/* ---------- Buttons -------------------------------------------------------- */

[data-theme="realestate"] .btn:focus-visible { outline-color: rgba(232, 200, 121, .55); }
[data-theme="realestate"] .btn--primary {
    --btn-bg: var(--gradient-gold); --btn-hover: var(--gradient-gold-hover); --btn-border: transparent; --btn-fg: var(--navy);
    box-shadow: 0 8px 20px rgba(214, 178, 94, .2);
}
[data-theme="realestate"] .btn--primary:active { transform: scale(.98); }
[data-theme="realestate"] .btn--stock { --btn-fg: var(--navy); }

/* ---------- Badges, alerts ------------------------------------------------- */

[data-theme="realestate"] .badge--till { color: #34d399; }
[data-theme="realestate"] .badge--stock { color: var(--brand-hover); }
[data-theme="realestate"] .badge--client { color: #a3b5f0; }
[data-theme="realestate"] .badge--warning { color: #fbbf24; }
[data-theme="realestate"] .badge--danger { color: #fb7185; }

/* Information stays blue: gold is the brand, not a message colour. */
[data-theme="realestate"] .alert { background: var(--client-soft); border-color: rgba(123, 150, 232, .25); color: #c9d5fa; }
[data-theme="realestate"] .alert--success { background: var(--till-soft); border-color: rgba(16, 185, 129, .25); color: #a7f3d0; }
[data-theme="realestate"] .alert--warning { background: var(--warning-soft); border-color: rgba(245, 158, 11, .25); color: #fde68a; }
[data-theme="realestate"] .alert--danger,
[data-theme="realestate"] .alert--error { background: var(--danger-soft); border-color: rgba(244, 63, 94, .25); color: #fecdd3; }

/* ---------- Forms, dialogs ------------------------------------------------- */

[data-theme="realestate"] :is(input[type=text], input[type=email], input[type=password], input[type=number],
    input[type=search], input[type=date], input[type=tel], select, textarea) {
    background: rgba(7, 14, 38, .7);
}
[data-theme="realestate"] ::placeholder { color: #66739a; }

[data-theme="realestate"] dialog.modal { border: 1px solid var(--border); }
[data-theme="realestate"] dialog.modal::backdrop { background: rgba(2, 6, 20, .8); backdrop-filter: blur(4px); }

[data-theme="realestate"] .login {
    background:
        radial-gradient(circle at 15% 15%, rgba(37, 64, 160, .4) 0, transparent 45%),
        radial-gradient(circle at 85% 90%, rgba(214, 178, 94, .18) 0, transparent 45%),
        var(--bg);
}

/* ---------- Real estate components ----------------------------------------- */

/* Energy (DPE) and climate (GES) labels, official ADEME colours. */
.dpe, .ges {
    display: inline-grid; place-items: center;
    min-width: 1.75rem; padding: .1rem .45rem;
    border-radius: 4px;
    font-weight: 800; font-size: .8rem; line-height: 1.4;
    color: #fff; text-shadow: 0 1px 2px rgba(0, 0, 0, .35);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14); /* keeps dark labels (GES F, G) visible on dark surfaces */
}
.dpe--A { background: #009c6d; }
.dpe--B { background: #52b153; }
.dpe--C { background: #a5cc74; color: #10231a; text-shadow: none; }
.dpe--D { background: #f4e70f; color: #2a2600; text-shadow: none; }
.dpe--E { background: #f0b50f; color: #2a1d00; text-shadow: none; }
.dpe--F { background: #eb8235; }
.dpe--G { background: #d7221f; }
.ges--A { background: #a4dbf8; color: #0c2a3a; text-shadow: none; }
.ges--B { background: #8cb4d3; color: #0c2236; text-shadow: none; }
.ges--C { background: #7792b1; }
.ges--D { background: #5d6f94; }
.ges--E { background: #4d5272; }
.ges--F { background: #393551; }
.ges--G { background: #281b35; }

/* ---------- Print: invoices and receipts stay black on white --------------- */

@media print {
    :root[data-theme="realestate"] {
        color-scheme: light;
        --bg: #fff; --surface: #fff; --surface-alt: #f8f9fb; --surface-solid: #fff;
        --border: #dfe4ea; --text: #1f2933; --muted: #697586;
    }
    [data-theme="realestate"] body { background: #fff; }
    [data-theme="realestate"] .card { backdrop-filter: none; }
}

/* ---------- Real estate module (templates/realestate) ----------------------- */

/* The logos are navy and gold on white: keep them on a light plate over the dark theme. */
[data-theme="realestate"] .sidebar__logo--image { background: #fff; }
[data-theme="realestate"] .login__brand img { background: #fff; border-radius: var(--radius); padding: .75rem 1rem; }

.form-section { font-size: 1rem; margin: 1.5rem 0 .75rem; color: var(--muted); }


/* Property cards. */
.property-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 1rem; margin-bottom: 1rem; }
.property-card { padding: 0; overflow: hidden; transition: transform .15s ease, border-color .15s ease; }
.property-card:hover { transform: translateY(-2px); border-color: var(--brand); }
.property-card__link { display: block; padding: 1rem; color: inherit; text-decoration: none; }
.property-card__head { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; margin-bottom: .6rem; }
.property-card__spacer { flex: 1; }
.property-card h3 { display: flex; gap: .4rem; align-items: center; margin: 0 0 .2rem; font-size: 1rem; }
.property-card__price { font-size: 1.3rem; font-weight: 700; margin: .5rem 0; color: var(--brand-hover, var(--brand)); }
.property-card__facts { display: flex; flex-wrap: wrap; gap: .3rem .9rem; list-style: none; margin: 0; padding: 0; color: var(--muted); font-size: .85rem; }
.property-card__facts li { display: inline-flex; gap: .3rem; align-items: center; }

/* Sales pipeline (dashboard). */
.pipeline { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: .6rem; list-style: none; margin: 0; padding: 0; }
.pipeline__step a {
    display: flex; flex-direction: column; gap: .15rem; padding: .8rem;
    border: 1px solid var(--border); border-radius: var(--radius-sm); border-top: 3px solid var(--muted);
    color: inherit; text-decoration: none; background: var(--surface-alt, transparent);
}
.pipeline__step--stock a { border-top-color: var(--stock); }
.pipeline__step--client a { border-top-color: var(--client); }
.pipeline__step--warning a { border-top-color: var(--warning); }
.pipeline__step--till a { border-top-color: var(--till); }
.pipeline__count { font-size: 1.6rem; font-weight: 700; }
.pipeline__label { font-weight: 600; font-size: .9rem; }

/* Steps of the sale (property page). */
.steps { display: flex; gap: .4rem; list-style: none; margin: 0; padding: 0; overflow-x: auto; counter-reset: step; }
.steps__item {
    flex: 1; min-width: 110px; padding: .55rem .7rem; border-radius: var(--radius-sm);
    border: 1px solid var(--border); color: var(--muted); font-size: .85rem; font-weight: 600; white-space: nowrap;
}
.steps__item::before { counter-increment: step; content: counter(step) ". "; }
.steps__item.is-done { color: var(--till); border-color: var(--till-soft); background: var(--till-soft); }
.steps__item.is-current { color: var(--navy, #13235b); background: var(--gradient-gold, var(--brand)); border-color: transparent; }

/* Agenda: visits of a day, tasks, offers (lists inside cards). */
.agenda, .tasks, .offers { list-style: none; margin: 0; padding: 0; }
.agenda-day { margin: 0; padding: .6rem 1rem .3rem; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); }
.agenda-item { display: flex; gap: .8rem; align-items: flex-start; padding: .7rem 1rem; border-bottom: 1px solid var(--border); }
.agenda-item:last-child, .task:last-child, .offer:last-child { border-bottom: 0; }
.agenda-item__time { font-weight: 700; min-width: 3rem; color: var(--client-hover, var(--client)); }
.agenda-item__body { flex: 1; min-width: 0; }
.agenda-item__note { margin: .3rem 0 0; font-size: .85rem; white-space: pre-line; }
.agenda-item__actions { display: flex; gap: .25rem; align-items: center; }
.agenda-item__actions form { display: inline; }

.task { display: flex; gap: .6rem; align-items: flex-start; padding: .55rem 1rem; border-bottom: 1px solid var(--border); }
.task__check {
    width: 1.35rem; height: 1.35rem; flex: none; margin-top: .1rem; padding: 0;
    display: grid; place-items: center; cursor: pointer;
    border: 2px solid var(--muted); border-radius: 50%; background: transparent; color: var(--till);
}
.task__check:hover { border-color: var(--till); }
.task.is-done .task__check { border-color: var(--till); }
.task.is-done .task__body > a { text-decoration: line-through; color: var(--muted); }
.task.is-overdue .caption { color: var(--danger); }
.task__body { flex: 1; min-width: 0; }

.offer { padding: .7rem 1rem; border-bottom: 1px solid var(--border); }
.offer__main { display: flex; gap: .5rem; align-items: center; flex-wrap: wrap; }
.offer__actions { margin-top: .5rem; flex-wrap: wrap; }
.offer__actions form { display: inline; }

@media (max-width: 640px) {
    .hide-sm { display: none; }
    .agenda-item { flex-wrap: wrap; }
    .agenda-item__actions { width: 100%; justify-content: flex-end; }
}

/* Buyer ↔ property matches. */
.matches { list-style: none; margin: 0; padding: 0; }
.match { display: flex; gap: .8rem; align-items: center; padding: .7rem 1rem; border-bottom: 1px solid var(--border); }
.match:last-child { border-bottom: 0; }
.match__score {
    flex: none; min-width: 3.4rem; padding: .3rem .4rem; border-radius: var(--radius-sm); text-align: center;
    font-weight: 800; background: var(--client-soft); color: var(--client-hover, var(--client));
}
.match.is-hot .match__score { background: var(--gradient-gold, var(--brand)); color: var(--navy, #13235b); }
.match__body { flex: 1; min-width: 0; }
.match__plus { color: var(--till); }
.match__minus { color: var(--warning); }

/* Fee simulator: the proposal shown to the owner. */
.proposal { text-align: center; }
.proposal__intro { margin: 0; color: var(--muted); font-size: 1rem; }
.proposal__price { font-size: clamp(2rem, 7vw, 3rem); font-weight: 800; letter-spacing: -.02em; color: var(--brand-hover, var(--brand)); }
.proposal__split { list-style: none; margin: 1.2rem auto 0; padding: 0; max-width: 28rem; text-align: left; }
.proposal__split li { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem 0; border-top: 1px solid var(--border); }
.proposal__net { font-size: 1.15rem; }
.proposal__net strong { color: var(--till); font-size: 1.4rem; }
.table tr.is-selected td { background: var(--brand-soft); }
