:root{color-scheme:dark;--bg:#101820;--panel:#151f29;--panel2:#1a2631;--border:#293643;--muted:#91a0ad;--text:#edf2f5;--green:#77d5a4;--green2:#193d32;--blue:#69b5ec;--orange:#eebc70;--red:#f07876;--purple:#b799ef;--radius:12px;font:13px 'DM Sans',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);height:100vh;overflow:hidden}.topbar{height:58px;background:#121b24;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;padding:0 18px;position:relative;z-index:500}.brand{display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--text)}.brand-mark{width:31px;height:31px;border-radius:9px;background:linear-gradient(135deg,#77d5a4,#388a6e);display:grid;place-items:center;color:#10231b;font:800 19px Manrope}.brand strong{display:block;font:700 14px Manrope;letter-spacing:-.3px}.brand small{display:block;color:var(--muted);font-size:10px;margin-top:2px}.topmeta{display:flex;align-items:center;gap:8px;color:#bdc7ce;font-size:11px}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 3px #554325}.quiet-btn,.text-btn{background:transparent;border:0;color:#aab8c2;font:500 11px inherit;cursor:pointer}.quiet-btn{margin-left:20px}.layout{height:calc(100vh - 58px);display:grid;grid-template-columns:275px minmax(320px,1fr) 440px}.sidebar{background:var(--panel);padding:17px 16px;overflow:auto;scrollbar-width:thin;scrollbar-color:#384651 transparent;position:relative;z-index:2}.left{border-right:1px solid var(--border)}.right{border-left:1px solid var(--border);padding:17px 15px}.section-head,.right-heading{display:flex;justify-content:space-between;align-items:center}.section-head{margin-bottom:16px}.section-head h1,.section-head h2,.right-heading h2{font:700 15px Manrope;margin:4px 0 0;letter-spacing:-.35px}.section-head h1{font-size:17px}.eyebrow{font:700 9px 'DM Sans';letter-spacing:1.2px;color:#91a3ad}.icon-btn{border:1px solid var(--border);background:#1c2832;color:#cad4da;border-radius:8px;height:31px;min-width:31px;padding:0 8px;cursor:pointer}.icon-btn:hover,.map-btn:hover,.sort-btn:hover{border-color:#4c6170;color:#fff}.field-label{display:block;font-size:10px;color:#a9b6bf;margin:0 0 6px}select,input[type=number],input[type=search]{background:#202c37;border:1px solid #31404c;color:#edf2f5;border-radius:7px;height:32px;padding:0 9px;font:500 11px inherit;outline:none}select:focus,input:focus{border-color:#65b58c;box-shadow:0 0 0 2px #65b58c22}#daySelect{width:100%}.time-controls{display:flex;align-items:center;justify-content:space-between;margin-top:16px}.time-readout strong{display:block;font:700 25px Manrope;letter-spacing:-1px}.time-readout span{font-size:9px;font-weight:700;letter-spacing:1px;color:#8e9ca6}.buttons{display:flex;gap:6px;align-items:center}.primary-btn,.secondary-btn{border:0;border-radius:7px;padding:8px 11px;font:700 10px 'DM Sans';cursor:pointer}.primary-btn{background:#62c995;color:#10271c}.primary-btn:hover{background:#84ddb0}.secondary-btn{background:#253841;color:#a9dec0;border:1px solid #36574c}.secondary-btn:hover{background:#2c4840}.buttons .icon-btn{font-size:10px;font-weight:700;height:31px}.time-slider{width:100%;margin:16px 0 4px;accent-color:#68cc98;height:4px}.slider-ticks{display:flex;justify-content:space-between;color:#6f7c87;font-size:9px}.speed-row{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#a7b3bb;margin:13px 0 15px}.speed-row select{width:62px;height:27px}hr{border:0;border-top:1px solid var(--border);margin:14px 0}.compact{margin:0 0 11px}.compact h2{font-size:12px}.count-pill,.edit-tag{font-size:9px;color:#b9c6ce;background:#202c36;border:1px solid #34434d;border-radius:20px;padding:4px 7px}.edit-tag{color:#7ed3a5;background:#193329;border-color:#2a5541;font-weight:700;letter-spacing:.6px}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.stat-card{background:#1b2731;border:1px solid #293944;border-radius:8px;padding:8px 9px}.stat-card span{display:block;color:#8999a4;font-size:9px}.stat-card strong{display:block;font:700 17px Manrope;margin-top:3px}.legend{display:grid;gap:7px;margin:13px 0 9px}.legend span{font-size:10px;color:#c4cdd3;display:flex;align-items:center;gap:8px}.dot{width:8px;height:8px;border-radius:50%;box-shadow:0 0 0 2px #ffffff18}.red{background:var(--red)}.blue{background:var(--blue)}.purple{background:var(--purple)}.micro-note{font-size:9px;color:#7f8e98;line-height:1.55;margin:9px 1px 12px}.target-card{border:1px solid var(--border);background:#1a2630;border-radius:9px;padding:10px;margin:8px 0;cursor:pointer}.target-card.active{border-color:#397351;box-shadow:inset 0 0 0 1px #2e6144}.target-title{display:flex;align-items:center;gap:8px}.target-title strong,.target-title small{display:block}.target-title strong{font-size:10px}.target-title small{font-size:9px;color:#91a0aa;margin-top:3px}.target-symbol{width:23px;height:23px;border-radius:7px;display:grid;place-items:center;font-weight:800}.green{background:#214633;color:#7bdaa7}.orange{background:#493921;color:#f2c47e}.age-inputs{display:flex;align-items:center;gap:5px;margin:9px 0 0 31px;color:#7f8e97;font-size:9px}.age-inputs input{width:49px;height:25px;text-align:center;padding:0}.full{width:100%;margin:5px 0}.left-footer{display:flex;justify-content:space-between;margin-top:16px;border-top:1px solid var(--border);padding-top:10px}.text-btn{font-size:10px;padding:4px 0}.text-btn:hover,.quiet-btn:hover{color:#9be4b9}.map-panel{position:relative;min-width:0;background:#1d302f}.map-panel #map{position:absolute;inset:0;background:#e8e7df}.leaflet-container{background:#e7e8df;font:12px 'DM Sans',sans-serif}.leaflet-tile{filter:saturate(.66) contrast(.93) brightness(1.05)}.leaflet-control-attribution{font-size:9px!important}.map-toolbar{position:absolute;z-index:450;top:14px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;gap:12px;pointer-events:none}.map-title,.map-actions{pointer-events:auto;box-shadow:0 4px 18px #16232c24}.map-title{display:flex;align-items:center;gap:9px;background:#17232aee;border:1px solid #ffffff24;border-radius:9px;padding:9px 11px}.map-title strong,.map-title small{display:block}.map-title strong{font-size:9px;letter-spacing:.9px}.map-title small{font-size:9px;color:#9eacb3;margin-top:3px}.map-pin{font-size:19px;color:#82dba8}.map-actions{display:flex;gap:5px;background:#17232aee;border:1px solid #ffffff24;border-radius:9px;padding:5px}.map-btn{border:1px solid transparent;background:transparent;color:#b7c3ca;border-radius:6px;padding:7px 8px;font:600 9px 'DM Sans';cursor:pointer}.map-btn.selected{background:#314138;color:#9de0b5}.map-legend{position:absolute;z-index:400;left:14px;bottom:35px;display:flex;gap:12px;background:#17232ae8;border:1px solid #ffffff20;border-radius:7px;padding:7px 9px;color:#dae0e3;font-size:9px;pointer-events:none}.line-swatch{display:inline-block;width:17px;border-top:2px solid #6b8586;vertical-align:middle;margin-right:5px}.map-scale{position:absolute;z-index:400;right:10px;bottom:4px;color:#526164;font-size:8px;text-shadow:0 1px #fff}.map-load{position:absolute;z-index:700;top:50%;left:50%;transform:translate(-50%,-50%);background:#16242be8;padding:10px 16px;border-radius:7px;color:white;font-size:11px}.map-load.hidden{display:none}.right-heading{margin-bottom:15px}.right-heading h2{font-size:16px}.tab-row{display:flex;border-bottom:1px solid var(--border);gap:13px}.tab{background:transparent;border:0;border-bottom:2px solid transparent;color:#8999a3;padding:8px 0 9px;font:600 10px 'DM Sans';cursor:pointer;white-space:nowrap}.tab.active{color:#dff3e7;border-color:#69cf98}.tab-count{color:#8bd5a9;background:#243c31;padding:2px 5px;border-radius:10px;font-size:8px;margin-left:3px}.tab-content{display:none}.tab-content.active{display:block}.target-switch{display:flex;gap:6px;margin:12px 0}.switch-btn{flex:1;background:#1c2933;border:1px solid #30404b;border-radius:7px;color:#84949f;padding:7px 8px;text-align:left;font-weight:800;cursor:pointer}.switch-btn span{font:600 9px 'DM Sans';margin-left:4px}.switch-btn.active[data-target=small]{background:#1c342b;border-color:#356349;color:#8fddb0}.switch-btn.active[data-target=large]{background:#392f20;border-color:#67512c;color:#f2c783}.result-subtitle{display:flex;justify-content:space-between;align-items:center;margin:12px 0 9px}.result-subtitle strong,.result-subtitle small{display:block}.result-subtitle strong{font-size:10px}.result-subtitle small{font-size:9px;color:#8c9ba5;margin-top:4px}.sort-btn{font-size:9px;color:#b8c5cc;background:#202c36;border:1px solid #34434d;border-radius:6px;padding:6px 7px;cursor:pointer}.uncertainty{display:flex;align-items:center;gap:7px;background:#302b20;border:1px solid #5b4d2c;border-radius:7px;padding:8px;color:#d9c18b;font-size:9px;line-height:1.4}.uncertainty-icon{font:700 16px Manrope;color:#ebcc85}.rank-list{margin-top:7px;max-height:calc(100vh - 362px);overflow:auto;scrollbar-width:thin;scrollbar-color:#364651 transparent}.rank-row{display:grid;grid-template-columns:23px 1fr auto;gap:7px;align-items:center;padding:8px 4px;border-bottom:1px solid #27343e;cursor:pointer}.rank-row:hover,.rank-row.selected{background:#1d2c35;border-radius:6px}.rank-num{width:20px;height:20px;border-radius:6px;background:#202d36;display:grid;place-items:center;color:#acb9c1;font-size:9px;font-weight:700}.rank-row:nth-child(-n+3) .rank-num{background:#244434;color:#8cddb0}.rank-name{font-size:9px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rank-meta{font-size:8px;color:#81909a;margin-top:3px;white-space:nowrap}.rank-value{text-align:right;font:700 12px Manrope}.rank-value small{display:block;font:500 8px 'DM Sans';color:#82919a;margin-top:2px}.rank-foot{padding:8px 2px;color:#81909a;font-size:9px;line-height:1.45}.data-toolbar{display:flex;gap:5px;margin:12px 0 7px}.data-toolbar input{min-width:0;flex:1}.data-toolbar select{min-width:0;flex:1}.data-toolbar .secondary-btn{white-space:nowrap;padding:7px}.table-wrap{max-height:calc(100vh - 300px);overflow:auto;border:1px solid var(--border);border-radius:7px}.data-table{width:100%;border-collapse:collapse;font-size:9px}.data-table th{position:sticky;top:0;background:#202c35;color:#9babb5;text-align:left;font-size:8px;padding:8px 6px}.data-table td{border-top:1px solid #27343e;padding:6px;color:#d8e0e4}.data-table input,.data-table select{max-width:105px;width:100%;height:25px;font-size:9px;padding:0 5px}.data-table .tiny{width:61px}.data-hint{font-size:9px;color:#82919a;line-height:1.5;margin-top:9px}.detail-card{background:#1b2832;border:1px solid #354650;border-radius:8px;padding:10px;margin-top:9px;font-size:9px;line-height:1.6}.detail-card h3{font:700 12px Manrope;margin:0 0 4px}.detail-card .detail-grid{display:grid;grid-template-columns:1fr 1fr;color:#9daab1}.detail-card b{color:#e6ecef}.hidden{display:none!important}.right-footer{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}.confidence{display:flex;align-items:center;gap:8px;background:#29251d;border:1px solid #4d422a;border-radius:8px;padding:8px;margin-bottom:7px}.confidence-mark{width:19px;height:19px;border-radius:50%;background:#554628;color:#f0cb7a;display:grid;place-items:center;font-weight:800;font-size:11px}.confidence strong,.confidence small{display:block}.confidence strong{font-size:9px;color:#eed28c}.confidence small{font-size:8px;color:#b0a37f;margin-top:2px}.modal-backdrop{position:fixed;inset:0;z-index:1200;background:#070d12b8;display:grid;place-items:center;padding:20px}.modal-backdrop.hidden{display:none}.modal{width:min(640px,95vw);max-height:85vh;overflow:hidden;background:#17222c;border:1px solid #364550;border-radius:12px;box-shadow:0 20px 80px #0008;display:flex;flex-direction:column}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-bottom:1px solid var(--border)}.modal-head h2{font:700 17px Manrope;margin:4px 0 0}.modal-body{padding:15px 18px;overflow:auto;color:#c1ccd2;font-size:11px;line-height:1.65}.modal-body h3{font:700 12px Manrope;color:#e9eff2;margin:14px 0 4px}.modal-body a{color:#84dba8}.modal-body li{margin:5px 0}.modal-actions{padding:11px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end}.toast{position:fixed;z-index:1400;bottom:22px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#273b31;color:#dff5e7;border:1px solid #477258;border-radius:8px;padding:10px 14px;font-size:11px;transition:.2s;box-shadow:0 6px 26px #0005}.toast.show{transform:translate(-50%,0);opacity:1}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:#1a2730;color:#eef3f5}.leaflet-popup-content{font:10px 'DM Sans';line-height:1.55}.leaflet-popup-content b{font-family:Manrope;font-size:11px}.marker-label{color:#1c2830;font-size:9px;font-weight:700;text-shadow:0 1px white,1px 0 white,-1px 0 white}.zone-label{font-size:9px;font-weight:700;color:#17232b;text-shadow:0 1px 3px white,0 0 4px white}.leaflet-div-icon{background:transparent;border:0}.leaflet-control-zoom a{color:#24323a!important}
@media(max-width:1120px){.layout{grid-template-columns:255px minmax(280px,1fr) 360px}.sidebar{padding-left:12px;padding-right:12px}.map-actions{gap:1px}.map-btn{padding:7px 5px}}@media(max-width:900px){body{height:auto;overflow:auto}.topbar{position:sticky;top:0}.layout{height:auto;min-height:calc(100vh - 58px);grid-template-columns:250px minmax(0,1fr)}.map-panel{height:calc(100vh - 58px);position:sticky;top:58px;grid-column:2;grid-row:1 / span 2}.right{grid-column:1;grid-row:2;border-left:0;border-top:1px solid var(--border)}.left{grid-column:1;grid-row:1}.rank-list{max-height:500px}.map-toolbar{align-items:flex-start;flex-direction:column}.map-actions{flex-wrap:wrap}}@media(max-width:600px){.layout{display:flex;flex-direction:column}.map-panel{position:relative;top:auto;order:0;height:65vh;min-height:420px}.left{order:1;border-right:0}.right{order:2;border-left:0}.topmeta .quiet-btn{margin-left:5px}.map-toolbar{top:8px;left:8px;right:8px}.map-title{padding:7px 9px}.map-actions{width:max-content}.rank-list{max-height:none}}
.variable-source-list{display:grid;gap:5px;margin-top:8px}.variable-source-list details{border:1px solid #34444f;border-radius:7px;background:#1a2731;padding:7px 9px}.variable-source-list summary{cursor:pointer;color:#e5edf0;font-weight:600;font-size:10px}.variable-source-list summary code{display:block;color:#9fc8b3;font:9px 'DM Sans',sans-serif;margin-top:2px;overflow-wrap:anywhere}.variable-source-list details p{margin:7px 0 1px;color:#b9c6cc;font-size:10px;line-height:1.55}.variable-source-list details b{color:#e4ebee}

.overlay-legend{position:absolute;z-index:410;left:14px;bottom:76px;display:grid;gap:6px;max-width:min(350px,calc(100% - 28px));background:#17232af2;border:1px solid #ffffff26;border-radius:8px;padding:9px 11px;color:#e4eaed;font-size:10px;box-shadow:0 4px 18px #16232c35}.overlay-legend strong{font-size:10px}.overlay-legend span{display:flex;align-items:center;gap:8px}.overlay-legend small{font-size:9px;line-height:1.4;color:#aebbc1}.legend-chip{width:12px;height:12px;border:1px solid #ffffff8c;border-radius:3px;display:inline-block}.habitat-low{background:#6da4bd}.habitat-mid{background:#dbb164}.habitat-high{background:#72bd91}.legend-bubble{display:inline-block;width:9px;height:9px;border-radius:50%;border:1px solid white;background:#238f6b}.legend-bubble.large{width:18px;height:18px}.overlay-legend.hidden{display:none}@media(max-width:600px){.overlay-legend{bottom:90px;left:8px}.map-legend{left:8px;bottom:38px;flex-wrap:wrap;max-width:calc(100% - 16px)}}

.trail-swatch{display:inline-block;width:17px;border-top:3px solid #69b5ec;border-bottom:1px solid #f5f8fa;box-shadow:0 0 5px #69b5ec;vertical-align:middle;margin-right:5px}.map-legend .hidden{display:none!important}
.dot.orange{background:#f3b65f}.bus-live-icon{background:#fff8e9;border:2px solid #d48c34;border-radius:8px;color:#3c301c;font:800 8px "DM Sans",sans-serif;display:grid;place-items:center;box-shadow:0 2px 8px #2632388a}.bus-live-icon span{padding:2px 3px}.stat-card strong{font-size:13px}
.modal-backdrop.agent-modal .modal{width:min(540px,95vw);max-height:min(82vh,760px)}
.agent-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}
.agent-form-grid>label{display:flex;flex-direction:column;gap:6px;color:#aebbc3;font-size:11px;font-weight:600}
.agent-form-grid input,.agent-form-grid select{width:100%;height:36px;font-size:12px}
.agent-info{display:flex;flex-direction:column;gap:4px;min-width:0;padding:9px 10px;background:#1d2a34;border:1px solid #2d3b46;border-radius:8px}
.agent-info span{color:#91a0ad;font-size:10px}
.agent-info b{color:#e6ecef;font-size:11px;font-weight:600;overflow-wrap:anywhere}
.agent-info small{color:#99a7af;font-weight:400}
.agent-info.wide{grid-column:1/-1}
.agent-save{margin-top:16px;padding:10px}
@media(max-width:560px){.modal-backdrop{padding:10px}.modal-backdrop.agent-modal .modal{width:100%;max-height:90vh}.agent-form-grid{grid-template-columns:1fr}.agent-info.wide{grid-column:auto}}
.agent-hover-tooltip{position:absolute;z-index:1000;max-width:260px;padding:7px 9px;border:1px solid #47606b;border-radius:7px;background:#14212beF;color:#edf2f5;font:500 11px/1.4 'DM Sans',sans-serif;box-shadow:0 5px 16px #0007;pointer-events:none}

.agent-inspector{position:absolute;z-index:650;top:66px;right:12px;width:min(370px,calc(100% - 24px));max-height:calc(100% - 118px);display:flex;flex-direction:column;background:#17232af2;border:1px solid #57706f;border-radius:11px;box-shadow:0 8px 30px #101a20a6;backdrop-filter:blur(8px)}
.agent-inspector-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid #ffffff1b;flex:none}
.agent-inspector-head h2{font:700 14px Manrope,sans-serif;color:#edf3f4;margin:4px 0 0}
.agent-inspector-actions{display:flex;align-items:center;gap:5px;flex:none}
.agent-inspector-actions .icon-btn{white-space:nowrap}
.agent-inspector-actions .tracking{color:#9de0b5;border-color:#477258;background:#1e352b}
.agent-inspector-body{padding:12px;overflow:auto;overscroll-behavior:contain;color:#c1ccd2;font-size:11px;line-height:1.6}
.agent-inspector-body .agent-form-grid{gap:9px 10px}
.agent-inspector-body .agent-info{padding:7px 8px}
.agent-inspector-body .agent-save{margin-top:10px}
@media(max-width:600px){.agent-inspector{top:104px;right:8px;width:min(340px,calc(100% - 16px));max-height:calc(100% - 150px)}.agent-inspector-body .agent-form-grid{grid-template-columns:1fr 1fr}}
@media(max-width:380px){.agent-inspector-body .agent-form-grid{grid-template-columns:1fr}}
#resetBtn{display:grid;place-items:center;width:31px;min-width:31px;height:31px;padding:0}
#resetBtn svg{display:block;width:16px;height:16px}
.public-viewer #campaignPanel,
.public-viewer .left-footer,
.public-viewer .tab[data-tab="data"],
.public-viewer #dataTab,
.public-viewer .right-footer {
  display: none !important;
}
.public-viewer .status-dot,
.public-viewer #runStatus {
  display: none !important;
}
.public-viewer .topmeta .quiet-btn {
  margin-left: 0;
}

.data-table tbody tr:hover{background:#263b3c;cursor:crosshair}.rank-row{cursor:pointer}.rank-row:hover{background:#20322f}
.places-table,.places-table tbody{display:block;width:100%}.places-table thead{display:none}.places-table tbody tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px 9px;padding:10px;margin:0 0 8px;border:1px solid #31414b;border-radius:8px;background:#1c2a33}.places-table td{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0;border:0;padding:2px 0;overflow-wrap:anywhere}.places-table td:first-child{grid-column:1/-1;font-size:11px;font-weight:700;color:#edf2f5}.places-table td:nth-child(2){grid-column:1/-1;color:#94aaae}.places-table td:last-child{grid-column:1/-1;display:block;color:#91a5ae;line-height:1.5;border-top:1px solid #33434d;margin-top:4px;padding-top:6px}.places-table td:last-child a{color:#8bd4b0}.places-table td:nth-child(3)::before{content:'Utilité'}.places-table td:nth-child(4)::before{content:'Popularité'}.places-table td:nth-child(5)::before{content:'Âge moyen'}.places-table td:nth-child(6)::before{content:'Emplois'}.places-table td:nth-child(7)::before{content:'Places simultanées'}.places-table td:nth-child(n+3):nth-child(-n+7)::before{font-size:9px;color:#9aabb4}.places-table input.tiny{width:61px;min-width:56px;flex:0 0 auto}
.campaign-weeks{width:100%;margin-bottom:6px}.campaign-progress{display:block;width:100%;height:8px;margin:10px 0;accent-color:#77d5a4}.campaign-link{display:block;text-align:center;text-decoration:none;margin-top:10px}.campaign-link:hover{color:#dff5e7;background:#2c4840}
