.vf-modal[hidden]{display:none!important}.vf-modal{position:fixed;inset:0;z-index:250;display:grid;align-items:end;justify-items:center}.vf-modal-backdrop{position:absolute;inset:0;background:rgba(13,43,68,.46);backdrop-filter:blur(2px);opacity:0;transition:.18s}.vf-modal-sheet{position:relative;width:min(760px,100%);max-height:min(82vh,760px);overflow:auto;background:#fff;border-radius:26px 26px 0 0;padding:32px 28px calc(28px + env(safe-area-inset-bottom));box-shadow:0 -18px 55px rgba(11,46,80,.18);transform:translateY(24px);opacity:0;transition:.18s}.vf-modal.is-open .vf-modal-backdrop{opacity:1}.vf-modal.is-open .vf-modal-sheet{transform:none;opacity:1}.vf-modal-close{position:absolute;right:20px;top:18px;width:42px;height:42px;border:0;border-radius:12px;background:#eef4f8;color:#103b61;font-size:30px;line-height:1}.vf-modal-kicker{margin:0 52px 10px 0;color:#c5862c;font-weight:850;font-size:12px;letter-spacing:.16em}.vf-modal-sheet h2{margin:0 52px 22px 0;font-family:Georgia,"Times New Roman",serif;color:#073b6d;font-size:31px;line-height:1.08}.vf-modal-content{color:#173b5b}.vf-modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:26px}.vf-action-primary,.vf-action-secondary{border-radius:12px;padding:13px 16px;font-weight:800}.vf-action-primary{border:1px solid #073b6d;background:#073b6d;color:#fff}.vf-action-secondary{border:1px solid #cfdee7;background:#fff;color:#176da9}.vf-modal-open{overflow:hidden}.vf-intro{margin:0 0 20px;color:#6f8294;line-height:1.5}.vf-list{display:grid}.vf-list article{display:grid;grid-template-columns:44px 1fr;gap:14px;align-items:center;padding:16px 0;border-top:1px solid #e5ecef}.vf-list article:first-child{border-top:0}.vf-list article div{display:grid;gap:5px}.vf-list b{font-size:15px;color:#0b2e50}.vf-list small{font-size:12px;color:#718599;line-height:1.4}.vf-dot{width:12px;height:12px;border-radius:50%;justify-self:center}.vf-dot.danger{background:#e85c59}.vf-dot.warning{background:#c5862c}.vf-dot.info{background:#176aaa}.vf-badge{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#e8f6ef;color:#248961;font-size:11px;font-weight:900}.vf-avatar{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#eaf4fb;color:#073b6d;font-size:11px;font-weight:900}.vf-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.vf-detail-grid>div{background:#f5f8fa;border:1px solid #e0e8ed;border-radius:14px;padding:14px;display:grid;gap:6px}.vf-detail-grid small{color:#718599;font-size:11px}.vf-detail-grid b{font-size:13px;line-height:1.4;color:#0b2e50}.vf-history{margin-top:16px;border:1px solid #e0e8ed;border-radius:14px;padding:16px}.vf-history b{color:#0b2e50}.vf-history p{margin:7px 0 0;color:#6f8294;line-height:1.5;font-size:13px}.vf-confidence{display:flex;align-items:baseline;gap:8px;margin-bottom:18px}.vf-confidence strong{font-family:Georgia,"Times New Roman",serif;font-size:38px;color:#248961}.vf-confidence span{color:#718599}.vf-kpi{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}.vf-kpi strong{font-family:Georgia,"Times New Roman",serif;font-size:46px;color:#073b6d}.vf-kpi span{color:#718599}.vf-prompts{display:grid;gap:9px}.vf-prompts button{border:1px solid #cfdee7;background:#f8fbfd;color:#0b3b65;border-radius:12px;padding:12px;text-align:left;font-weight:700}.vf-ai-answer{margin-top:16px;background:#edf7fd;border:1px solid #d4e7f2;border-radius:14px;padding:16px;color:#17486e;line-height:1.5}.vf-toast{position:fixed;left:50%;bottom:calc(26px + env(safe-area-inset-bottom));z-index:300;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#073b6d;color:#fff;border-radius:999px;padding:12px 18px;box-shadow:0 10px 28px rgba(7,59,109,.25);font-size:13px;font-weight:750;transition:.18s;white-space:nowrap;max-width:90vw;overflow:hidden;text-overflow:ellipsis}.vf-toast.show{transform:translate(-50%,0);opacity:1}.map-node{outline:none}.analysis-row{transition:background .15s}.analysis-row:active,.prestation-row:active,.quick-card:active{background:#f7fafc}

/* Vue Carte dédiée */
.vf-map-view .demo-shell{display:block;padding-top:0}.vf-map-view .control-hero,.vf-map-view .quick-stats,.vf-map-view #planning,.vf-map-view #requests,.vf-map-view #actions,.vf-map-view #partners{display:none!important}.vf-map-view #map{display:block!important;margin:0;border-radius:0 0 20px 20px;box-shadow:none}.vf-map-view #map .panel-heading{display:none}.vf-map-view #map .france-map-wrap{padding:36px 28px 28px}.vf-map-view #map .france-map{max-height:760px}.vf-map-view .map-node{cursor:pointer}.vf-map-view .map-node .dot{transition:.18s}.vf-map-view .map-node.selected-stop .halo{stroke:#f5dada}.vf-map-view .map-node.selected-stop .dot{fill:#e85a57}.vf-stop-detail{margin-top:22px;padding:42px 28px 30px;border-radius:20px;box-shadow:none}.vf-stop-head p{margin:0 0 18px;color:#c5862c;font-size:13px;font-weight:850;letter-spacing:.16em}.vf-stop-head h2{margin:0 0 34px;font-family:Georgia,"Times New Roman",serif;font-size:36px;line-height:1.06;color:#073b6d}.vf-stop-activity{border:2px solid #83add1;background:#eef6fc;border-radius:20px;padding:24px 24px 22px;display:grid;gap:14px}.vf-stop-activity .pill{justify-self:start;margin:0}.vf-stop-activity>b{font-size:17px;color:#0b2e50}.vf-stop-activity>small{font-size:14px;color:#718599}.vf-stop-activity.is-empty{border-color:#dbe5ec;background:#f8fafb}.vf-open-stop{width:100%;margin-top:28px;border:0;border-radius:14px;background:#073b6d;color:#fff;padding:18px;font-weight:850;font-size:17px}.vf-stop-pulse{animation:vfStopPulse .45s ease}@keyframes vfStopPulse{50%{transform:scale(.99);opacity:.8}}

@media(min-width:761px){.vf-modal{align-items:center}.vf-modal-sheet{border-radius:24px;max-width:720px}.vf-modal-actions{justify-content:flex-end}.vf-map-view #map,.vf-stop-detail{border-radius:22px}.vf-map-view .demo-shell{padding-top:30px}}
@media(max-width:560px){.vf-modal-sheet{padding:28px 20px calc(22px + env(safe-area-inset-bottom))}.vf-modal-sheet h2{font-size:27px}.vf-detail-grid{grid-template-columns:1fr}.vf-modal-actions{display:grid;grid-template-columns:1fr 1fr}.vf-action-primary,.vf-action-secondary{width:100%}.vf-list article{grid-template-columns:42px 1fr}.vf-map-view .demo-shell{padding:0 16px 40px}.vf-map-view #map .france-map-wrap{padding:26px 14px 22px}.vf-stop-detail{padding:32px 24px 26px}.vf-stop-head h2{font-size:34px}.vf-stop-activity{padding:22px 18px}.vf-open-stop{font-size:17px}}

.vf-operation-ok{border-left:5px solid #3f9b70}.vf-operation-attention{border-left:5px solid #d9a32d}.vf-operation-action{border-left:5px solid #df7c2e}.vf-operation-blocked{border-left:5px solid #d64d4d}.vf-status-action{background:#fff0df;color:#a95716}.vf-status-blocked{background:#fff0f0;color:#aa3434}.vf-attention-box{margin-top:16px;border:1px solid #f0c792;background:#fff7ec;border-radius:14px;padding:16px;color:#8a4a17}.vf-attention-box b{display:block;margin-bottom:6px;color:#9a4f12}.vf-conflict-box{margin-top:12px;border:1px solid #efb1b1;background:#fff1f1;border-radius:14px;padding:16px;color:#9f3030}.vf-conflict-box b{display:block;margin-bottom:6px}

.vf-edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.vf-edit-field{display:grid;gap:6px}.vf-edit-field span{font-size:11px;font-weight:750;color:#718599}.vf-edit-field input{width:100%;border:1px solid #cfdee7;border-radius:12px;padding:12px 13px;font:inherit;color:#173b5b;background:#fff}.vf-edit-field input:focus{outline:none;border-color:#5a8fd3;box-shadow:0 0 0 3px rgba(31,105,213,.09)}@media(max-width:560px){.vf-edit-grid{grid-template-columns:1fr}}

.vf-calendar-panel{padding:24px}.vf-calendar-toolbar{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:12px}.vf-calendar-toolbar>div{text-align:center}.vf-calendar-toolbar p{margin:0;color:#c5862c;font-size:11px;font-weight:850;letter-spacing:.14em}.vf-calendar-toolbar h2{margin:5px 0 0;text-transform:capitalize;color:#073b6d}.vf-calendar-toolbar button,.vf-calendar-actions button,.vf-calendar-actions select{border:1px solid #cfdee7;background:#fff;color:#0b3b65;border-radius:11px;padding:10px;font-weight:750}.vf-calendar-toolbar button{font-size:28px;line-height:1}.vf-calendar-actions{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.vf-calendar-week,.vf-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.vf-calendar-week span{text-align:center;color:#718599;font-size:11px;font-weight:800;padding:6px}.vf-cal-day{min-height:104px;border:1px solid #e0e8ed;border-radius:12px;padding:7px;background:#fff;overflow:hidden}.vf-cal-day.empty{background:#f7f9fa;border-style:dashed}.vf-cal-day>b{display:block;color:#45647e;font-size:12px;margin-bottom:5px}.vf-cal-event{display:block;width:100%;border:0;border-radius:7px;padding:5px 6px;margin:4px 0;text-align:left;font-size:9px;line-height:1.25;background:#f4f8fa;color:#163c5d;overflow:hidden}.vf-cal-event small{display:block;font-size:8px;opacity:.72;margin-top:2px}.vf-cal-event.vf-operation-ok{background:#e8f6ef;border-left:4px solid #3f9b70}.vf-cal-event.vf-operation-attention{background:#fff8df;border-left:4px solid #d9a32d}.vf-cal-event.vf-operation-action{background:#fff0df;border-left:4px solid #df7c2e}.vf-cal-event.vf-operation-blocked{background:#fff0f0;border-left:4px solid #d64d4d}@media(max-width:560px){.vf-calendar-panel{padding:16px 10px}.vf-cal-day{min-height:78px;padding:4px;border-radius:8px}.vf-calendar-week,.vf-calendar-grid{gap:2px}.vf-cal-event{font-size:8px;padding:4px}.vf-calendar-actions{display:grid;grid-template-columns:1fr 1fr}.vf-calendar-actions select:last-of-type{grid-column:1/-1}}

/* Concordiae Assistant */
.vf-ai-thread{display:grid;gap:10px;max-height:42vh;overflow:auto;padding:4px 2px 12px}
.vf-ai-message{max-width:88%;padding:12px 14px;border-radius:14px;line-height:1.45;font-size:14px;white-space:pre-wrap}
.vf-ai-message.system{max-width:100%;background:#eef6fb;color:#315b78}
.vf-ai-message.user{justify-self:end;background:#073b6d;color:#fff;border-bottom-right-radius:5px}
.vf-ai-message.assistant{justify-self:start;background:#f2f6f8;color:#173b5b;border-bottom-left-radius:5px}
.vf-ai-message.pending{justify-self:start;background:#f7f8f9;color:#718599;font-style:italic}
.vf-ai-message.error{max-width:100%;background:#fff1f1;color:#a53c3c}
.vf-ai-form{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;margin-top:14px}
.vf-ai-form textarea{width:100%;resize:none;border:1px solid #cfdee7;border-radius:13px;padding:12px 13px;color:#173b5b;background:#fff;outline:none}
.vf-ai-form textarea:focus{border-color:#5a8fd3;box-shadow:0 0 0 3px rgba(31,105,213,.09)}
.vf-ai-form button{border:0;border-radius:12px;background:#073b6d;color:#fff;font-weight:800;padding:13px 16px}
.vf-ai-form button:disabled{opacity:.5;cursor:default}
@media(max-width:560px){.vf-ai-form{grid-template-columns:1fr}.vf-ai-form button{width:100%}.vf-ai-thread{max-height:38vh}}
.vf-ai-workspace{display:grid;grid-template-columns:210px minmax(0,1fr);gap:14px;min-height:58vh}.vf-ai-sidebar{background:#f4f7f8;border-radius:14px;padding:12px;overflow:auto}.vf-ai-sidebar-head{display:flex;align-items:center;justify-content:space-between;color:#173b5b;font-size:17px}.vf-ai-sidebar button{border:0;background:transparent;color:#173b5b;text-align:left;cursor:pointer}.vf-ai-sidebar-head button{font-size:24px}.vf-ai-project-new{width:100%;padding:10px 4px;margin:8px 0;border-bottom:1px solid #dbe4e8!important}.vf-ai-history-title{font-size:10px;letter-spacing:.12em;color:#82929d;margin:14px 4px 7px}.vf-ai-project,.vf-ai-conversation{display:block;width:100%;padding:8px;border-radius:8px;margin:2px 0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vf-ai-conversation.active{background:#fff!important;font-weight:700}.vf-ai-main{min-width:0;display:flex;flex-direction:column}.vf-ai-main .vf-ai-thread{flex:1;max-height:48vh}@media(max-width:640px){.vf-ai-workspace{grid-template-columns:118px minmax(0,1fr);gap:8px}.vf-ai-sidebar{padding:8px}.vf-ai-project,.vf-ai-conversation{font-size:11px;padding:7px 4px}}

.vf-ai-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.vf-ai-tools button,.vf-ai-tools select{border:1px solid #cfdee7;background:#fff;border-radius:8px;padding:8px;color:#173b5b;max-width:100%}.vf-ai-tools label{font-size:12px}.vf-ai-project.active{background:#e2edf5!important;font-weight:700}.vf-ai-workspace button:disabled,.vf-ai-workspace select:disabled{opacity:.5;cursor:wait}.vf-ai-thread{overflow-wrap:anywhere}
