:root{--bg:#0b1020;--panel:#121a2d;--line:#25304a;--text:#eef2ff;--muted:#91a0bd;--accent:#f3b73f;--green:#42d392;--red:#ff6b6b}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px Inter,system-ui,sans-serif}header{height:70px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100% - 1280px)/2));background:#0d1425;position:sticky;top:0}header strong{font-size:20px;color:var(--accent);margin-right:12px}header span,.title p,small{color:var(--muted)}nav{display:flex;align-items:center;gap:22px}a{color:#cbd5e1;text-decoration:none}nav form{margin:0}button,.button{background:#1d2942;color:white;border:1px solid #34415e;border-radius:8px;padding:9px 13px;cursor:pointer}.primary{background:var(--accent);color:#111827;border:0;font-weight:700}main{max-width:1280px;margin:0 auto;padding:32px 24px 60px}.title{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.title h1{margin:0 0 6px;font-size:30px}.title p{margin:0}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.cards article,.tfgrid article,.panel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px}.cards b{display:block;font-size:26px;margin:10px 0}.cards span{color:var(--muted);font-size:13px}.running{color:var(--green)}.stale{color:var(--accent)}.panel{margin-bottom:20px;overflow:auto}.panelhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.panel h2{margin-top:0}.pill{display:inline-block;background:#26334f;border:1px solid #3a4a6a;border-radius:999px;padding:5px 10px;font-size:12px}.decision{display:grid;grid-template-columns:1fr 1fr 4fr;gap:25px}.decision strong{display:block;margin-top:8px}.tfgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.tfgrid article div{display:flex;justify-content:space-between}.tfgrid article span{font-size:11px;color:var(--muted)}.tfgrid h3{font-size:20px}.tfgrid p{color:var(--muted);font-size:13px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px;border-bottom:1px solid var(--line);vertical-align:top}th{color:var(--muted);font-size:12px}.login{max-width:420px;margin:10vh auto;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:32px}.login label{display:block;margin:18px 0;color:var(--muted)}input,select{width:100%;margin-top:7px;background:#0b1222;border:1px solid #34415e;color:white;padding:11px;border-radius:8px}.alert{background:#4a2028;border:1px solid #8c3544;padding:12px;border-radius:8px}.filters{display:grid;grid-template-columns:170px 1fr 100px auto;gap:10px;margin-bottom:18px}.logbox{font-size:13px}.logline{display:grid;grid-template-columns:190px 80px 1fr;gap:10px;padding:7px;border-bottom:1px solid #1d2740}.logline time{color:var(--muted)}.level.warning{color:var(--accent)}.level.error,.level.critical{color:var(--red)}code{white-space:pre-wrap}.pagination{display:flex;justify-content:space-between;padding-top:18px}@media(max-width:850px){.cards,.tfgrid{grid-template-columns:1fr 1fr}.decision{grid-template-columns:1fr}.filters{grid-template-columns:1fr}header span{display:none}}@media(max-width:540px){.cards,.tfgrid{grid-template-columns:1fr}nav a{display:none}main{padding:20px 12px}}

.positive{color:var(--green)!important}.negative{color:var(--red)!important}.warning-text{color:var(--accent)!important}.muted{color:var(--muted)}.monthnav{display:flex;align-items:center;gap:12px}.performance-cards{margin-bottom:20px}.calendar-head,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.calendar-head{margin-bottom:8px;color:var(--muted);text-align:center}.calendar-day{min-height:145px;border:1px solid var(--line);border-radius:10px;padding:12px;background:#0e1628;display:flex;flex-direction:column;gap:8px}.calendar-day.empty{background:transparent;border-style:dashed;opacity:.35}.calendar-day.gain{border-color:rgba(66,211,146,.55);background:rgba(66,211,146,.08)}.calendar-day.loss{border-color:rgba(255,107,107,.55);background:rgba(255,107,107,.08)}.calendar-day.flat{border-color:#52617e}.day-number{align-self:flex-end;color:var(--muted)}.calendar-day>strong{font-size:20px}.calendar-day details{margin-top:auto}.calendar-day summary{cursor:pointer;color:var(--accent);font-size:12px}.trade-mini{display:grid;grid-template-columns:1fr auto;gap:3px;border-top:1px solid var(--line);padding-top:6px;margin-top:6px}.trade-mini small{grid-column:1/-1}@media(max-width:850px){.calendar-head{display:none}.calendar-grid{grid-template-columns:1fr 1fr}.calendar-day.empty{display:none}}@media(max-width:540px){.calendar-grid{grid-template-columns:1fr}}

/* =========================================================
   Performance — calendrier mensuel
   ========================================================= */

.performance-calendar {
    width: 100%;
    overflow-x: auto;
}

.calendar-weekdays,
.calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(110px, 1fr));
    gap: 8px;
}

.calendar-weekdays {
    margin-bottom: 8px;
}

.calendar-weekday {
    padding: 10px 8px;
    color: var(--muted, #94a3b8);
    font-size: 0.78rem;
    font-weight: 700;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.calendar-day {
    min-height: 112px;
    padding: 10px;
    border: 1px solid #263550;
    border-radius: 10px;
    background: #111a2d;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.calendar-day.is-empty {
    min-height: 112px;
    background: transparent;
    border-color: transparent;
}

.calendar-day.is-positive {
    border-color: rgba(34, 197, 94, 0.55);
    background: rgba(34, 197, 94, 0.08);
}

.calendar-day.is-negative {
    border-color: rgba(239, 68, 68, 0.55);
    background: rgba(239, 68, 68, 0.08);
}

.calendar-day.is-neutral {
    border-color: rgba(148, 163, 184, 0.4);
}

.calendar-day.is-pending {
    border-color: rgba(245, 158, 11, 0.65);
    background: rgba(245, 158, 11, 0.08);
}

.calendar-day-number {
    font-size: 0.85rem;
    font-weight: 700;
    color: #cbd5e1;
}

.calendar-day-result {
    margin-top: auto;
    font-size: 1.15rem;
    font-weight: 800;
}

.calendar-day.is-positive .calendar-day-result {
    color: #4ade80;
}

.calendar-day.is-negative .calendar-day-result {
    color: #f87171;
}

.calendar-day-meta {
    color: #94a3b8;
    font-size: 0.75rem;
    line-height: 1.35;
}

.calendar-day-empty {
    margin-top: auto;
    color: #64748b;
    font-size: 0.75rem;
}

@media (max-width: 900px) {
    .calendar-weekdays,
    .calendar-grid {
        grid-template-columns: repeat(7, minmax(95px, 1fr));
    }

    .calendar-day {
        min-height: 100px;
        padding: 8px;
    }
}