{"__meta":{"id":"01KZXNHQFBY4VN63C1XTDDKFGD","tabUuid":null,"batchId":null,"timestamp":"2026-08-13T13:38:53.035Z","utime":1786628333.035227,"method":"GET","url":"http://127.0.0.1:8000/trades/27","component":null,"requestType":"http","status":200,"redirectLocation":null,"serverTimingMs":3.841833,"visitId":null},"http":{"requestHeaders":{"host":"127.0.0.1:8000","connection":"keep-alive","sec-ch-ua":"\"Not=A?Brand\";v=\"99\", \"Google Chrome\";v=\"151\", \"Chromium\";v=\"151\"","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":"\"macOS\"","upgrade-insecure-requests":"1","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/151.0.0.0 Safari/537.36","accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7","sec-fetch-site":"same-origin","sec-fetch-mode":"navigate","sec-fetch-user":"?1","sec-fetch-dest":"document","referer":"http://127.0.0.1:8000/trades?mode=real","accept-encoding":"gzip, deflate, br, zstd","accept-language":"fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7","cookie":"[REDACTED]"},"responseHeaders":{"content-type":"text/html; charset=utf-8","cache-control":"no-cache, private","date":"Thu, 13 Aug 2026 13:38:53 GMT","vary":"X-Inertia","x-inertia-devtools-id":"01KZXNHQFBY4VN63C1XTDDKFGD","x-inertia-devtools-parent-out":"01KZXNHQFBY4VN63C1XTDDKFGD"},"requestBody":{"status":"empty"},"responseBody":{"status":"present","value":"<!DOCTYPE html>\n<html lang=\"fr\" data-theme=\"dark\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n\n    <title>Fiche trade — ICT Performance Lab</title>\n\n    <script>\n        (() => {\n            const savedTheme = localStorage.getItem('ict-theme') || 'dark';\n            document.documentElement.dataset.theme = savedTheme;\n        })();\n    </script>\n\n    <style>\n        :root,\n        html[data-theme=\"dark\"] {\n            --bg-base: #070b12;\n            --bg-surface: #0d1420;\n            --bg-elevated: #111a2b;\n            --bg-hover: #162033;\n\n            --border: rgba(255, 255, 255, 0.06);\n            --border-strong: rgba(255, 255, 255, 0.10);\n\n            --text-primary: #e8edf5;\n            --text-secondary: #8b9cb8;\n            --text-muted: #5c6b82;\n\n            --accent: #3b82f6;\n            --accent-hover: #2563eb;\n            --accent-light: #60a5fa;\n            --accent-glow: rgba(59, 130, 246, 0.22);\n\n            --positive: #22c55e;\n            --negative: #ef4444;\n\n            --long: #22c55e;\n            --long-bg: rgba(34, 197, 94, 0.10);\n\n            --short: #ef4444;\n            --short-bg: rgba(239, 68, 68, 0.10);\n\n            --radius: 10px;\n            --radius-sm: 6px;\n\n            --font-sans:\n                -apple-system,\n                BlinkMacSystemFont,\n                \"Segoe UI\",\n                Roboto,\n                \"Helvetica Neue\",\n                Arial,\n                sans-serif;\n\n            --font-mono:\n                \"SF Mono\",\n                \"Fira Code\",\n                \"Roboto Mono\",\n                monospace;\n        }\n\n        html[data-theme=\"light\"] {\n            --bg-base: #f4f6fa;\n            --bg-surface: #ffffff;\n            --bg-elevated: #f8fafc;\n            --bg-hover: #edf1f6;\n\n            --border: rgba(15, 23, 42, 0.08);\n            --border-strong: rgba(15, 23, 42, 0.14);\n\n            --text-primary: #172033;\n            --text-secondary: #64748b;\n            --text-muted: #94a3b8;\n\n            --accent: #2563eb;\n            --accent-hover: #1d4ed8;\n            --accent-light: #3b82f6;\n            --accent-glow: rgba(37, 99, 235, 0.16);\n\n            --positive: #16a34a;\n            --negative: #dc2626;\n\n            --long: #16a34a;\n            --long-bg: rgba(22, 163, 74, 0.09);\n\n            --short: #dc2626;\n            --short-bg: rgba(220, 38, 38, 0.08);\n        }\n\n        * {\n            box-sizing: border-box;\n        }\n\n        html {\n            font-size: 15px;\n        }\n\n        body {\n            margin: 0;\n            min-height: 100vh;\n\n            font-family: var(--font-sans);\n\n            background: var(--bg-base);\n            color: var(--text-primary);\n\n            line-height: 1.5;\n            -webkit-font-smoothing: antialiased;\n\n            transition:\n                background-color 0.2s ease,\n                color 0.2s ease;\n        }\n\n        body::before {\n            content: \"\";\n\n            position: fixed;\n            inset: 0;\n\n            background:\n                radial-gradient(\n                    ellipse 80% 50% at 50% -20%,\n                    rgba(59, 130, 246, 0.08),\n                    transparent\n                ),\n                radial-gradient(\n                    ellipse 60% 40% at 100% 100%,\n                    rgba(34, 197, 94, 0.04),\n                    transparent\n                );\n\n            pointer-events: none;\n            z-index: -1;\n        }\n\n        .app-topbar {\n            position: sticky;\n            top: 0;\n            z-index: 100;\n\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n\n            gap: 1rem;\n\n            padding: 0.75rem 1.25rem;\n\n            background: var(--bg-surface);\n\n            border-bottom: 1px solid var(--border);\n\n            box-shadow: 0 5px 25px rgba(0, 0, 0, 0.08);\n        }\n\n        .app-brand {\n            display: flex;\n            flex-direction: column;\n\n            text-decoration: none;\n        }\n\n        .app-brand__name {\n            color: var(--text-primary);\n\n            font-size: 0.9rem;\n            font-weight: 750;\n\n            line-height: 1.2;\n        }\n\n        .app-brand__author {\n            margin-top: 0.15rem;\n\n            color: var(--accent);\n\n            font-size: 0.62rem;\n            font-weight: 650;\n\n            letter-spacing: 0.13em;\n            text-transform: uppercase;\n        }\n\n        .theme-selector {\n            display: flex;\n            align-items: center;\n\n            gap: 0.25rem;\n\n            padding: 0.25rem;\n\n            background: var(--bg-elevated);\n\n            border: 1px solid var(--border-strong);\n            border-radius: 8px;\n        }\n\n        .theme-button {\n            appearance: none;\n\n            border: none;\n\n            padding: 0.45rem 0.75rem;\n\n            background: transparent;\n            color: var(--text-secondary);\n\n            border-radius: 6px;\n\n            font-family: var(--font-sans);\n            font-size: 0.78rem;\n            font-weight: 650;\n\n            cursor: pointer;\n\n            transition:\n                background 0.15s ease,\n                color 0.15s ease,\n                box-shadow 0.15s ease;\n        }\n\n        .theme-button:hover {\n            background: var(--bg-hover);\n            color: var(--text-primary);\n        }\n\n        .theme-button.is-active {\n            background: var(--accent);\n            color: #ffffff;\n\n            box-shadow:\n                0 4px 14px var(--accent-glow);\n        }\n\n        .app-content {\n            position: relative;\n            z-index: 1;\n            width: 100%;\n        }\n\n        @media (max-width: 650px) {\n            .app-topbar {\n                flex-direction: column;\n                align-items: stretch;\n            }\n\n            .theme-selector {\n                width: 100%;\n            }\n\n            .theme-button {\n                flex: 1;\n            }\n        }\n\n        \n    .page {\n        max-width: 1240px;\n        margin: 0 auto;\n        padding: 2rem 1.5rem 3rem;\n    }\n\n    .trade-top {\n        display: flex;\n        align-items: flex-start;\n        justify-content: space-between;\n        gap: 1.25rem;\n        margin-bottom: 1.5rem;\n        flex-wrap: wrap;\n    }\n\n    .trade-title__eyebrow {\n        display: block;\n        margin-bottom: 0.35rem;\n        font-size: 0.7rem;\n        font-weight: 750;\n        letter-spacing: 0.14em;\n        text-transform: uppercase;\n        color: var(--accent);\n    }\n\n    .trade-title h1 {\n        margin: 0;\n        font-size: clamp(2rem, 4vw, 2.7rem);\n        font-weight: 800;\n        letter-spacing: -0.045em;\n        color: var(--text-primary);\n    }\n\n    .trade-title p {\n        margin: 0.45rem 0 0;\n        color: var(--text-secondary);\n        font-size: 0.95rem;\n    }\n\n    .top-actions {\n        display: flex;\n        gap: 0.65rem;\n        flex-wrap: wrap;\n    }\n\n    .action-btn {\n        min-height: 42px;\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        gap: 0.45rem;\n        padding: 0.7rem 1rem;\n        border: 1px solid var(--border);\n        border-radius: 10px;\n        background: var(--bg-surface);\n        color: var(--text-secondary);\n        font-size: 0.82rem;\n        font-weight: 750;\n        text-decoration: none;\n        transition: 0.15s ease;\n    }\n\n    .action-btn:hover {\n        transform: translateY(-1px);\n        color: var(--text-primary);\n        border-color: var(--border-strong);\n    }\n\n    .action-btn--primary {\n        color: #fff;\n        border-color: transparent;\n        background: linear-gradient(135deg, var(--accent-light), var(--accent));\n        box-shadow: 0 9px 24px var(--accent-glow);\n    }\n\n    .hero {\n        display: grid;\n        grid-template-columns: 1.2fr 1fr;\n        gap: 1rem;\n        margin-bottom: 1rem;\n    }\n\n    .hero-main,\n    .hero-kpis {\n        border: 1px solid var(--border);\n        border-radius: 17px;\n        background: var(--bg-surface);\n    }\n\n    .hero-main {\n        padding: 1.3rem 1.4rem;\n    }\n\n    .hero-main__top {\n        display: flex;\n        align-items: flex-start;\n        justify-content: space-between;\n        gap: 1rem;\n        flex-wrap: wrap;\n    }\n\n    .asset {\n        font-family: var(--font-mono);\n        font-size: 2rem;\n        font-weight: 850;\n        letter-spacing: -0.035em;\n        color: var(--text-primary);\n    }\n\n    .asset-meta {\n        margin-top: 0.45rem;\n        display: flex;\n        align-items: center;\n        gap: 0.45rem;\n        flex-wrap: wrap;\n    }\n\n    .trade-date {\n        text-align: right;\n        font-size: 0.8rem;\n        color: var(--text-secondary);\n    }\n\n    .trade-date strong {\n        display: block;\n        margin-bottom: 0.2rem;\n        font-family: var(--font-mono);\n        color: var(--text-primary);\n        font-size: 0.9rem;\n    }\n\n    .hero-main__bottom {\n        margin-top: 1.2rem;\n        display: grid;\n        grid-template-columns: repeat(4, 1fr);\n        gap: 0.7rem;\n    }\n\n    .micro-stat {\n        padding: 0.75rem;\n        border: 1px solid var(--border);\n        border-radius: 10px;\n        background: var(--bg-base);\n    }\n\n    .micro-stat__label {\n        font-size: 0.62rem;\n        font-weight: 800;\n        letter-spacing: 0.06em;\n        text-transform: uppercase;\n        color: var(--text-muted);\n    }\n\n    .micro-stat__value {\n        margin-top: 0.25rem;\n        font-family: var(--font-mono);\n        font-size: 0.85rem;\n        font-weight: 800;\n        color: var(--text-primary);\n    }\n\n    .hero-kpis {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        overflow: hidden;\n    }\n\n    .hero-kpi {\n        min-height: 118px;\n        padding: 1rem 1.05rem;\n        border-right: 1px solid var(--border);\n        border-bottom: 1px solid var(--border);\n    }\n\n    .hero-kpi:nth-child(2n) {\n        border-right: none;\n    }\n\n    .hero-kpi:nth-last-child(-n+2) {\n        border-bottom: none;\n    }\n\n    .hero-kpi__label {\n        margin-bottom: 0.4rem;\n        font-size: 0.64rem;\n        font-weight: 800;\n        letter-spacing: 0.07em;\n        text-transform: uppercase;\n        color: var(--text-muted);\n    }\n\n    .hero-kpi__value {\n        font-family: var(--font-mono);\n        font-size: 1.25rem;\n        font-weight: 850;\n        color: var(--text-primary);\n    }\n\n    .hero-kpi__sub {\n        margin-top: 0.3rem;\n        font-size: 0.7rem;\n        color: var(--text-secondary);\n    }\n\n    .badge {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        padding: 0.24rem 0.52rem;\n        border-radius: 6px;\n        font-size: 0.68rem;\n        font-weight: 800;\n        white-space: nowrap;\n    }\n\n    .badge--long {\n        color: var(--long);\n        background: var(--long-bg);\n    }\n\n    .badge--short {\n        color: var(--short);\n        background: var(--short-bg);\n    }\n\n    .badge--neutral {\n        color: var(--text-secondary);\n        background: rgba(100, 116, 139, 0.12);\n    }\n\n    .badge--success {\n        color: var(--positive);\n        background: rgba(34, 197, 94, 0.10);\n    }\n\n    .badge--danger {\n        color: var(--negative);\n        background: rgba(239, 68, 68, 0.10);\n    }\n\n    .badge--accent {\n        color: var(--accent);\n        background: var(--accent-glow);\n    }\n\n    .badge--warning {\n        color: #d97706;\n        background: rgba(245, 158, 11, 0.12);\n    }\n\n    .badge--paper {\n        color: #8b5cf6;\n        background: rgba(139, 92, 246, 0.10);\n    }\n\n    .positive { color: var(--positive) !important; }\n    .negative { color: var(--negative) !important; }\n    .muted { color: var(--text-muted) !important; }\n\n    .content-grid {\n        display: grid;\n        grid-template-columns: minmax(0, 1.45fr) minmax(300px, 0.75fr);\n        gap: 1rem;\n        align-items: start;\n    }\n\n    .stack {\n        display: grid;\n        gap: 1rem;\n    }\n\n    .module {\n        border: 1px solid var(--border);\n        border-radius: 16px;\n        background: var(--bg-surface);\n        overflow: hidden;\n    }\n\n    .module-head {\n        padding: 0.95rem 1.1rem;\n        background: var(--bg-elevated);\n        border-bottom: 1px solid var(--border);\n    }\n\n    .module-head h2 {\n        margin: 0;\n        font-size: 0.76rem;\n        font-weight: 800;\n        letter-spacing: 0.08em;\n        text-transform: uppercase;\n        color: var(--text-muted);\n    }\n\n    .module-body {\n        padding: 1.05rem 1.1rem;\n    }\n\n    .detail-grid {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 1rem 1.25rem;\n    }\n\n    .detail-grid--3 {\n        grid-template-columns: repeat(3, 1fr);\n    }\n\n    .detail-item__label {\n        margin-bottom: 0.25rem;\n        font-size: 0.68rem;\n        font-weight: 750;\n        color: var(--text-muted);\n    }\n\n    .detail-item__value {\n        font-size: 0.84rem;\n        line-height: 1.5;\n        color: var(--text-primary);\n    }\n\n    .detail-item__value--mono {\n        font-family: var(--font-mono);\n        font-weight: 750;\n    }\n\n    .confirmations {\n        display: grid;\n        grid-template-columns: repeat(2, 1fr);\n        gap: 0.65rem;\n    }\n\n    .confirmation {\n        display: flex;\n        align-items: center;\n        gap: 0.6rem;\n        min-height: 44px;\n        padding: 0.7rem 0.75rem;\n        border: 1px solid var(--border);\n        border-radius: 9px;\n        background: var(--bg-base);\n    }\n\n    .confirmation__icon {\n        width: 20px;\n        height: 20px;\n        display: grid;\n        place-items: center;\n        flex: 0 0 20px;\n        border-radius: 6px;\n        font-size: 0.68rem;\n        font-weight: 900;\n    }\n\n    .confirmation--yes .confirmation__icon {\n        color: var(--positive);\n        background: rgba(34, 197, 94, 0.12);\n    }\n\n    .confirmation--yes {\n        border-color: rgba(34, 197, 94, 0.20);\n    }\n\n    .confirmation--no {\n        opacity: 0.58;\n    }\n\n    .confirmation--no .confirmation__icon {\n        color: var(--text-muted);\n        background: var(--bg-elevated);\n    }\n\n    .confirmation__label {\n        font-size: 0.77rem;\n        color: var(--text-secondary);\n    }\n\n    .text-block {\n        padding: 0.85rem;\n        border: 1px solid var(--border);\n        border-radius: 10px;\n        background: var(--bg-base);\n        color: var(--text-secondary);\n        font-size: 0.8rem;\n        line-height: 1.6;\n        white-space: pre-wrap;\n    }\n\n    .discipline-wrap {\n        display: grid;\n        gap: 0.8rem;\n    }\n\n    .discipline-score {\n        display: flex;\n        align-items: center;\n        gap: 0.75rem;\n    }\n\n    .discipline-track {\n        flex: 1;\n        height: 7px;\n        overflow: hidden;\n        border-radius: 999px;\n        background: var(--bg-elevated);\n    }\n\n    .discipline-fill {\n        height: 100%;\n        border-radius: inherit;\n        background: linear-gradient(90deg, var(--accent), var(--accent-light));\n    }\n\n    .discipline-value {\n        min-width: 48px;\n        text-align: right;\n        font-family: var(--font-mono);\n        font-size: 0.82rem;\n        font-weight: 850;\n    }\n\n    .risk-list {\n        display: grid;\n        gap: 0.65rem;\n    }\n\n    .risk-row {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 1rem;\n        padding: 0.72rem 0.8rem;\n        border: 1px solid var(--border);\n        border-radius: 9px;\n        background: var(--bg-base);\n    }\n\n    .risk-row__label {\n        font-size: 0.72rem;\n        color: var(--text-secondary);\n    }\n\n    .risk-row__value {\n        text-align: right;\n        font-family: var(--font-mono);\n        font-size: 0.78rem;\n        font-weight: 850;\n        color: var(--text-primary);\n    }\n\n    .related-trade {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 0.8rem;\n        padding: 0.75rem 0.8rem;\n        border: 1px solid var(--border);\n        border-radius: 9px;\n        background: var(--bg-base);\n        text-decoration: none;\n        color: inherit;\n    }\n\n    .related-trade + .related-trade {\n        margin-top: 0.55rem;\n    }\n\n    .related-trade:hover {\n        border-color: var(--accent);\n    }\n\n    .related-trade__main {\n        min-width: 0;\n    }\n\n    .related-trade__asset {\n        font-family: var(--font-mono);\n        font-size: 0.8rem;\n        font-weight: 850;\n        color: var(--text-primary);\n    }\n\n    .related-trade__meta {\n        margin-top: 0.15rem;\n        font-size: 0.68rem;\n        color: var(--text-muted);\n    }\n\n    .related-trade__rr {\n        font-family: var(--font-mono);\n        font-size: 0.75rem;\n        font-weight: 850;\n        white-space: nowrap;\n    }\n\n    .meta-footer {\n        display: flex;\n        gap: 1rem;\n        flex-wrap: wrap;\n        margin-top: 0.9rem;\n        padding-top: 0.9rem;\n        border-top: 1px solid var(--border);\n        font-size: 0.68rem;\n        color: var(--text-muted);\n    }\n\n    .footer {\n        margin-top: 1.5rem;\n        text-align: center;\n        color: var(--text-muted);\n        font-size: 0.7rem;\n    }\n\n    @media (max-width: 980px) {\n        .hero,\n        .content-grid {\n            grid-template-columns: 1fr;\n        }\n\n        .hero-main__bottom,\n        .detail-grid--3 {\n            grid-template-columns: repeat(2, 1fr);\n        }\n    }\n\n    @media (max-width: 620px) {\n        .page {\n            padding: 1.2rem 1rem 2rem;\n        }\n\n        .top-actions {\n            width: 100%;\n        }\n\n        .action-btn {\n            flex: 1;\n        }\n\n        .hero-main__bottom,\n        .hero-kpis,\n        .detail-grid,\n        .detail-grid--3,\n        .confirmations {\n            grid-template-columns: 1fr;\n        }\n\n        .hero-kpi {\n            border-right: none;\n            border-bottom: 1px solid var(--border) !important;\n        }\n\n        .hero-kpi:last-child {\n            border-bottom: none !important;\n        }\n    }\n\n    </style>\n<script id=\"browser-logger-active\">\n(function() {\n    const ENDPOINT = 'http://127.0.0.1:8000/_boost/browser-logs';\n    const logQueue = [];\n    let flushTimeout = null;\n    const captureTypes = [\"error\",\"warning\",\"info\",\"log\",\"debug\",\"table\"];\n\n    console.log('🔍 Browser logger active (MCP server detected). Posting to: ' + ENDPOINT);\n\n    // Store original console methods\n    const originalConsole = {\n        log: console.log,\n        debug: console.debug,\n        info: console.info,\n        error: console.error,\n        warn: console.warn,\n        table: console.table\n    };\n\n    // Helper to safely stringify values\n    function safeStringify(obj) {\n        const seen = new WeakSet();\n        return JSON.stringify(obj, (key, value) => {\n            if (typeof value === 'object' && value !== null) {\n                if (seen.has(value)) return '[Circular]';\n                seen.add(value);\n            }\n            if (value instanceof Error) {\n                return {\n                    name: value.name,\n                    message: value.message,\n                    stack: value.stack\n                };\n            }\n            return value;\n        });\n    }\n\n    // Normalize log type for consistency (e.g., 'warn' to 'warning')\n    function normalizeType(type) {\n        return type === 'warn' ? 'warning' : type;\n    }\n\n    // Determine if a log type should be captured based on configured levels\n    function shouldCapture(type) {\n        return captureTypes.includes(normalizeType(type));\n    }\n\n    // Batch and send logs\n    function flushLogs() {\n        if (logQueue.length === 0) return;\n\n        const batch = logQueue.splice(0, logQueue.length);\n\n        fetch(ENDPOINT, {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application/json',\n                'X-Requested-With': 'XMLHttpRequest'\n            },\n            body: JSON.stringify({ logs: batch })\n        }).catch(err => {\n            // Silently fail to avoid infinite loops\n            originalConsole.error('Failed to send logs:', err);\n        });\n    }\n\n    // Debounced flush (100ms)\n    function scheduleFlush() {\n        if (flushTimeout) clearTimeout(flushTimeout);\n        flushTimeout = setTimeout(flushLogs, 100);\n    }\n\n    // Intercept console methods\n    ['log', 'debug', 'info', 'error', 'warn', 'table'].forEach(method => {\n        console[method] = function(...args) {\n            // Call original method\n            originalConsole[method].apply(console, args);\n\n            // Capture log data\n            try {\n                if (!shouldCapture(method)) {\n                    return;\n                }\n\n                logQueue.push({\n                    type: method,\n                    timestamp: new Date().toISOString(),\n                    data: args.map(arg => {\n                        try {\n                            return typeof arg === 'object' ? JSON.parse(safeStringify(arg)) : arg;\n                        } catch (e) {\n                            return String(arg);\n                        }\n                    }),\n                    url: window.location.href,\n                    userAgent: navigator.userAgent\n                });\n\n                scheduleFlush();\n            } catch (e) {\n                // Fail silently\n            }\n        };\n    });\n\n    // Global error handlers for uncaught errors\n    const originalOnError = window.onerror;\n    window.onerror = function boostErrorHandler(errorMsg, url, lineNumber, colNumber, error) {\n        try {\n            if (shouldCapture('error')) {\n                logQueue.push({\n                    type: 'uncaught_error',\n                    timestamp: new Date().toISOString(),\n                    data: [{\n                        message: errorMsg,\n                        filename: url,\n                        lineno: lineNumber,\n                        colno: colNumber,\n                        error: error ? {\n                            name: error.name,\n                            message: error.message,\n                            stack: error.stack\n                        } : null\n                    }],\n                    url: window.location.href,\n                    userAgent: navigator.userAgent\n                });\n\n                scheduleFlush();\n            }\n\n        } catch (e) {\n            // Fail silently\n        }\n\n        // Call original handler if it exists\n        if (originalOnError && typeof originalOnError === 'function') {\n            return originalOnError(errorMsg, url, lineNumber, colNumber, error);\n        }\n\n        // Let the error continue to propagate\n        return false;\n    }\n    window.addEventListener('error', (event) => {\n        try {\n            if (!shouldCapture('error')) {\n                return false;\n            }\n\n            logQueue.push({\n                type: 'window_error',\n                timestamp: new Date().toISOString(),\n                data: [{\n                    message: event.message,\n                    filename: event.filename,\n                    lineno: event.lineno,\n                    colno: event.colno,\n                    error: event.error ? {\n                        name: event.error.name,\n                        message: event.error.message,\n                        stack: event.error.stack\n                    } : null\n                }],\n                url: window.location.href,\n                userAgent: navigator.userAgent\n            });\n\n            scheduleFlush();\n        } catch (e) {\n            // Fail silently\n        }\n\n        // Let the error continue to propagate\n        return false;\n    });\n    window.addEventListener('unhandledrejection', (event) => {\n        try {\n            if (!shouldCapture('error')) {\n                return false;\n            }\n\n            logQueue.push({\n                type: 'error',\n                timestamp: new Date().toISOString(),\n                data: [{\n                    message: 'Unhandled Promise Rejection',\n                    reason: event.reason instanceof Error ? {\n                        name: event.reason.name,\n                        message: event.reason.message,\n                        stack: event.reason.stack\n                    } : event.reason\n                }],\n                url: window.location.href,\n                userAgent: navigator.userAgent\n            });\n\n            scheduleFlush();\n        } catch (e) {\n            // Fail silently\n        }\n\n        // Let the rejection continue to propagate\n        return false;\n    });\n\n    // Flush on page unload\n    window.addEventListener('beforeunload', () => {\n        if (logQueue.length > 0) {\n            navigator.sendBeacon(ENDPOINT, JSON.stringify({ logs: logQueue }));\n        }\n    });\n})();\n</script>\n</head>\n\n<body>\n\n<header class=\"app-topbar\">\n\n    <a\n        href=\"http://127.0.0.1:8000/trades\"\n        class=\"app-brand\"\n    >\n        <span class=\"app-brand__name\">\n            ICT Performance Lab\n        </span>\n\n        <span class=\"app-brand__author\">\n            by Jul\n        </span>\n    </a>\n\n    <div\n        class=\"theme-selector\"\n        aria-label=\"Thème de l'application\"\n    >\n\n        <button\n            type=\"button\"\n            class=\"theme-button\"\n            data-theme-choice=\"dark\"\n        >\n            ☾ Sombre\n        </button>\n\n        <button\n            type=\"button\"\n            class=\"theme-button\"\n            data-theme-choice=\"light\"\n        >\n            ☀ Clair\n        </button>\n\n    </div>\n\n</header>\n\n<main class=\"app-content\">\n    \n\n\n<div class=\"page\">\n\n    <div class=\"trade-top\">\n\n        <div class=\"trade-title\">\n            <span class=\"trade-title__eyebrow\">\n                ICT Performance Lab by Jul\n            </span>\n\n            <h1>Fiche trade</h1>\n\n            <p>\n                Lecture complète du setup, du risque et de la discipline.\n            </p>\n        </div>\n\n        <div class=\"top-actions\">\n            <a\n                href=\"http://127.0.0.1:8000/trades\"\n                class=\"action-btn\"\n            >\n                ← Journal\n            </a>\n\n            <a\n                href=\"http://127.0.0.1:8000/trades/27/edit\"\n                class=\"action-btn action-btn--primary\"\n            >\n                ✎ Modifier\n            </a>\n        </div>\n\n    </div>\n\n\n    <section class=\"hero\">\n\n        <div class=\"hero-main\">\n\n            <div class=\"hero-main__top\">\n\n                <div>\n                    <div class=\"asset\">\n                        TEST-TARGET\n                    </div>\n\n                    <div class=\"asset-meta\">\n\n                                                    <span class=\"badge badge--short\">Short</span>\n                        \n                                                    <span class=\"badge badge--accent\">Réel</span>\n                        \n                                                    <span class=\"badge badge--neutral\">\n                                Trade principal\n                            </span>\n                        \n                        \n                    </div>\n                </div>\n\n                <div class=\"trade-date\">\n                    <strong>\n                        29/08/2026\n                    </strong>\n\n                    09:00\n                </div>\n\n            </div>\n\n\n            <div class=\"hero-main__bottom\">\n\n                <div class=\"micro-stat\">\n                    <div class=\"micro-stat__label\">Session</div>\n                    <div class=\"micro-stat__value\">\n                        —\n                    </div>\n                </div>\n\n                <div class=\"micro-stat\">\n                    <div class=\"micro-stat__label\">Jour</div>\n                    <div class=\"micro-stat__value\">\n                        —\n                    </div>\n                </div>\n\n                <div class=\"micro-stat\">\n                    <div class=\"micro-stat__label\">Zone HTF</div>\n                    <div class=\"micro-stat__value\">\n                        —\n                    </div>\n                </div>\n\n                <div class=\"micro-stat\">\n                    <div class=\"micro-stat__label\">Liquidité</div>\n                    <div class=\"micro-stat__value\">\n                        —\n                    </div>\n                </div>\n\n            </div>\n\n        </div>\n\n\n        <div class=\"hero-kpis\">\n\n            <div class=\"hero-kpi\">\n                <div class=\"hero-kpi__label\">RR réalisé</div>\n\n                <div class=\"hero-kpi__value positive\">\n                                            +6.00R\n                                    </div>\n\n                <div class=\"hero-kpi__sub\">\n                    TP\n                </div>\n            </div>\n\n\n            <div class=\"hero-kpi\">\n                <div class=\"hero-kpi__label\">Risque utilisé</div>\n\n                <div class=\"hero-kpi__value\">\n                    0,75%\n                </div>\n\n                <div class=\"hero-kpi__sub\">\n                    Risque standard\n                </div>\n            </div>\n\n\n            <div class=\"hero-kpi\">\n                <div class=\"hero-kpi__label\">RR planifié</div>\n\n                <div class=\"hero-kpi__value\">\n                    —\n                </div>\n\n                <div class=\"hero-kpi__sub\">\n                    Objectif avant entrée\n                </div>\n            </div>\n\n\n            <div class=\"hero-kpi\">\n                <div class=\"hero-kpi__label\">Discipline</div>\n\n                <div class=\"hero-kpi__value\">\n                    —\n                </div>\n\n                <div class=\"hero-kpi__sub\">\n                    Qualité d'exécution\n                </div>\n            </div>\n\n        </div>\n\n    </section>\n\n\n    <div class=\"content-grid\">\n\n        <div class=\"stack\">\n\n            <section class=\"module\">\n\n                <div class=\"module-head\">\n                    <h2>Confirmations ICT</h2>\n                </div>\n\n                <div class=\"module-body\">\n\n                    <div class=\"confirmations\">\n\n                        \n                            \n                            <div class=\"confirmation confirmation--no\">\n\n                                <span class=\"confirmation__icon\">\n                                    —\n                                </span>\n\n                                <span class=\"confirmation__label\">\n                                    HTF Bias\n                                </span>\n\n                            </div>\n\n                        \n                            \n                            <div class=\"confirmation confirmation--no\">\n\n                                <span class=\"confirmation__icon\">\n                                    —\n                                </span>\n\n                                <span class=\"confirmation__label\">\n                                    Liquidité prise\n                                </span>\n\n                            </div>\n\n                        \n                            \n                            <div class=\"confirmation confirmation--no\">\n\n                                <span class=\"confirmation__icon\">\n                                    —\n                                </span>\n\n                                <span class=\"confirmation__label\">\n                                    Displacement\n                                </span>\n\n                            </div>\n\n                        \n                            \n                            <div class=\"confirmation confirmation--no\">\n\n                                <span class=\"confirmation__icon\">\n                                    —\n                                </span>\n\n                                <span class=\"confirmation__label\">\n                                    MSS\n                                </span>\n\n                            </div>\n\n                        \n                            \n                            <div class=\"confirmation confirmation--no\">\n\n                                <span class=\"confirmation__icon\">\n                                    —\n                                </span>\n\n                                <span class=\"confirmation__label\">\n                                    FVG 15m\n                                </span>\n\n                            </div>\n\n                        \n                            \n                            <div class=\"confirmation confirmation--no\">\n\n                                <span class=\"confirmation__icon\">\n                                    —\n                                </span>\n\n                                <span class=\"confirmation__label\">\n                                    Breaker\n                                </span>\n\n                            </div>\n\n                        \n                            \n                            <div class=\"confirmation confirmation--no\">\n\n                                <span class=\"confirmation__icon\">\n                                    —\n                                </span>\n\n                                <span class=\"confirmation__label\">\n                                    BISI 30m\n                                </span>\n\n                            </div>\n\n                        \n                            \n                            <div class=\"confirmation confirmation--no\">\n\n                                <span class=\"confirmation__icon\">\n                                    —\n                                </span>\n\n                                <span class=\"confirmation__label\">\n                                    News\n                                </span>\n\n                            </div>\n\n                        \n                    </div>\n\n                    \n                </div>\n\n            </section>\n\n\n            <section class=\"module\">\n\n                <div class=\"module-head\">\n                    <h2>Psychologie & analyse</h2>\n                </div>\n\n                <div class=\"module-body\">\n\n                    <div class=\"detail-grid\" style=\"margin-bottom: 1rem;\">\n\n                        <div class=\"detail-item\">\n                            <div class=\"detail-item__label\">\n                                Émotion avant le trade\n                            </div>\n\n                            <div class=\"detail-item__value\">\n                                —\n                            </div>\n                        </div>\n\n                        <div class=\"detail-item\">\n                            <div class=\"detail-item__label\">\n                                Setup Grade\n                            </div>\n\n                            <div class=\"detail-item__value\">\n                                —\n                            </div>\n                        </div>\n\n                    </div>\n\n\n                    <div class=\"detail-item\" style=\"margin-bottom: 0.8rem;\">\n                        <div class=\"detail-item__label\">\n                            Notes\n                        </div>\n\n                        <div class=\"text-block\">\n                            —\n                        </div>\n                    </div>\n\n\n                    <div class=\"detail-grid\">\n\n                        <div class=\"detail-item\">\n                            <div class=\"detail-item__label\">\n                                Ce qui a bien fonctionné\n                            </div>\n\n                            <div class=\"text-block\">\n                                —\n                            </div>\n                        </div>\n\n                        <div class=\"detail-item\">\n                            <div class=\"detail-item__label\">\n                                À améliorer\n                            </div>\n\n                            <div class=\"text-block\">\n                                —\n                            </div>\n                        </div>\n\n                    </div>\n\n                </div>\n\n            </section>\n\n\n            <section class=\"module\">\n\n                <div class=\"module-head\">\n                    <h2>MT5 / FTMO</h2>\n                </div>\n\n                <div class=\"module-body\">\n\n                    <div class=\"detail-grid\">\n\n                        <div class=\"detail-item\">\n                            <div class=\"detail-item__label\">\n                                Ticket MT5\n                            </div>\n\n                            <div class=\"detail-item__value detail-item__value--mono\">\n                                —\n                            </div>\n                        </div>\n\n                        <div class=\"detail-item\">\n                            <div class=\"detail-item__label\">\n                                Compte MT5\n                            </div>\n\n                            <div class=\"detail-item__value detail-item__value--mono\">\n                                —\n                            </div>\n                        </div>\n\n                    </div>\n\n                    <div class=\"meta-footer\">\n                        <span>\n                            Créé le 13/08/2026 à 13:10\n                        </span>\n\n                        <span>\n                            Modifié le 13/08/2026 à 13:10\n                        </span>\n\n                        <span>\n                            Trade #27\n                        </span>\n                    </div>\n\n                </div>\n\n            </section>\n\n        </div>\n\n\n        <aside class=\"stack\">\n\n            <section class=\"module\">\n\n                <div class=\"module-head\">\n                    <h2>Risk Manager</h2>\n                </div>\n\n                <div class=\"module-body\">\n\n                    <div class=\"risk-list\">\n\n                        <div class=\"risk-row\">\n                            <span class=\"risk-row__label\">\n                                Risque recommandé\n                            </span>\n\n                            <span class=\"risk-row__value\">\n                                0,75%\n                            </span>\n                        </div>\n\n                        <div class=\"risk-row\">\n                            <span class=\"risk-row__label\">\n                                Risque utilisé\n                            </span>\n\n                            <span class=\"risk-row__value\">\n                                0,75%\n                            </span>\n                        </div>\n\n                                                    <div class=\"risk-row\">\n                                <span class=\"risk-row__label\">\n                                    Risque cumulé idée\n                                </span>\n\n                                <span class=\"risk-row__value\">\n                                    0,75%\n                                </span>\n                            </div>\n                        \n                        <div class=\"risk-row\">\n                            <span class=\"risk-row__label\">\n                                Niveau\n                            </span>\n\n                            <span class=\"risk-row__value\">\n                                Risque standard\n                            </span>\n                        </div>\n\n                        <div class=\"risk-row\">\n                            <span class=\"risk-row__label\">\n                                Performance cycle\n                            </span>\n\n                            <span class=\"risk-row__value negative\">\n                                                                    -1,33%\n                                                            </span>\n                        </div>\n\n                        <div class=\"risk-row\">\n                            <span class=\"risk-row__label\">\n                                Règle de risque\n                            </span>\n\n                            <span class=\"risk-row__value\">\n                                                                    <span class=\"positive\">Respectée</span>\n                                                            </span>\n                        </div>\n\n                    </div>\n\n                </div>\n\n            </section>\n\n\n            <section class=\"module\">\n\n                <div class=\"module-head\">\n                    <h2>Discipline</h2>\n                </div>\n\n                <div class=\"module-body\">\n\n                    <div class=\"discipline-wrap\">\n\n                        <div>\n                            <div class=\"detail-item__label\">\n                                Score discipline\n                            </div>\n\n                                                            <div class=\"detail-item__value\">—</div>\n                                                    </div>\n\n                        <div class=\"risk-row\">\n                            <span class=\"risk-row__label\">\n                                Pas d'anticipation\n                            </span>\n\n                            <span class=\"risk-row__value\">\n                                                                    <span class=\"positive\">Oui</span>\n                                                            </span>\n                        </div>\n\n                        <div class=\"risk-row\">\n                            <span class=\"risk-row__label\">\n                                Règle 1 trade / jour\n                            </span>\n\n                            <span class=\"risk-row__value\">\n                                                                    <span class=\"positive\">Respectée</span>\n                                                            </span>\n                        </div>\n\n                    </div>\n\n                </div>\n\n            </section>\n\n\n            \n        </aside>\n\n    </div>\n\n\n    <footer class=\"footer\">\n        ICT Performance Lab by Jul — 2026\n    </footer>\n\n</div>\n\n</main>\n\n<script>\n    (() => {\n        const buttons =\n            document.querySelectorAll('[data-theme-choice]');\n\n        function applyTheme(theme) {\n            document.documentElement.dataset.theme = theme;\n\n            localStorage.setItem(\n                'ict-theme',\n                theme\n            );\n\n            buttons.forEach(button => {\n                const active =\n                    button.dataset.themeChoice === theme;\n\n                button.classList.toggle(\n                    'is-active',\n                    active\n                );\n\n                button.setAttribute(\n                    'aria-pressed',\n                    active ? 'true' : 'false'\n                );\n            });\n        }\n\n        const savedTheme =\n            localStorage.getItem('ict-theme') || 'dark';\n\n        applyTheme(savedTheme);\n\n        buttons.forEach(button => {\n            button.addEventListener('click', () => {\n                applyTheme(\n                    button.dataset.themeChoice\n                );\n            });\n        });\n    })();\n</script>\n\n\n</body>\n</html>"}},"props":[],"propValues":[],"route":{"name":"trades.show","uri":"/trades/{trade}","action":"App\\Http\\Controllers\\TradeController@show","actionSource":{"file":"/Users/jul/Documents/ICT-Performance-Lab/app/Http/Controllers/TradeController.php","line":563}},"renderSource":null,"componentPath":null}