:root{
  --bg:#020d1b;
  --bg-soft:#061428;
  --bg-card:#08172c;
  --bg-card-2:#0a1c35;
  --stroke:#112846;
  --stroke-soft:#173354;
  --text:#e8f2ff;
  --muted:#8fa6c8;
  --muted-2:#6f85a9;
  --blue:#2e7fe4;
  --blue-2:#68aefb;
  --green:#7fd95b;
  --red:#f05a67;
  --gold:#f0c25a;
  --shadow:0 12px 28px rgba(0,0,0,.28);
  --radius:14px;
  --font:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font);background:radial-gradient(circle at 50% -10%, rgba(31,93,191,.18), transparent 35%),linear-gradient(180deg,#03101f 0%,#020910 100%);color:var(--text)}
a{color:inherit}
button,input,select{font:inherit}
button{cursor:pointer}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);border:0}
[hidden]{display:none!important}

.app-shell{width:100%;min-height:100vh}
.topbar{display:grid;grid-template-columns:300px 1fr 440px;align-items:center;gap:14px;padding:18px 18px 14px;border-bottom:1px solid rgba(37,63,102,.52);background:linear-gradient(180deg, rgba(2,12,25,.98), rgba(3,12,24,.94))}
.brand{display:flex;align-items:center;gap:14px;text-decoration:none}
.brand-mark{width:58px;height:64px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.brand-mark svg{width:100%;height:100%;display:block}
.brand-copy{font-size:13px;line-height:1.05;letter-spacing:.03em;color:#f6fbff;text-shadow:0 2px 8px rgba(0,0,0,.3)}
.masthead{text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}
.masthead-title{font-size:28px;font-weight:800;letter-spacing:.08em;color:#f8fbff}
.masthead-accent{display:flex;align-items:center;justify-content:center;gap:0;height:6px}
.accent-left,.accent-right{display:block;height:4px;border-radius:999px}
.accent-left{width:86px;background:#f6fbff;opacity:.95}
.accent-right{width:74px;background:#db4350;margin-left:5px}
.masthead-subtitle{font-size:11px;letter-spacing:.15em;color:#cad8ef}
.masthead-disclaimer{font-size:10px;letter-spacing:.11em;color:#8ea2c3;opacity:.92}
.top-actions{display:flex;justify-content:flex-end;align-items:center;gap:18px}
.searchbox{display:flex;align-items:center;border:1px solid rgba(37,69,111,.8);background:rgba(8,25,48,.82);border-radius:10px;overflow:hidden;min-width:250px;width:100%;max-width:290px;height:42px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02)}
.searchbox input{flex:1;min-width:0;height:100%;border:0;background:transparent;color:#ecf5ff;padding:0 14px;font-size:13px;outline:none}
.searchbox input::placeholder{color:#7f97ba}
.searchbox button{width:44px;height:100%;border:0;background:transparent;color:#9db5da;font-size:16px}
.login-btn{border:0;border-radius:10px;background:linear-gradient(180deg,#204982,#143666);color:#f3f8ff;height:42px;padding:0 30px;font-weight:600;box-shadow:var(--shadow)}

.mainnav{display:flex;gap:2px;align-items:center;padding:0 18px;background:rgba(4,15,28,.98);border-bottom:1px solid rgba(37,63,102,.45)}
.navitem{position:relative;display:flex;align-items:center;gap:8px;padding:14px 16px;color:#d7e5fb;background:transparent;border:0;font-size:13px;font-weight:600;letter-spacing:.01em}
.navitem span{opacity:.8}
.navitem.active{color:#5fa0ff}
.navitem.active::after{content:"";position:absolute;left:10px;right:10px;bottom:0;height:2px;background:#2d7dea;border-radius:999px}

main{padding:18px}
.dashboard-grid{display:grid;grid-template-columns:286px minmax(0,1fr) 432px;gap:16px;align-items:start}
.right-stack{display:grid;gap:16px}
.card{background:linear-gradient(180deg,rgba(8,23,44,.95),rgba(5,18,34,.95));border:1px solid rgba(23,52,87,.95);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;overflow:hidden}
.section-title{font-size:14px;font-weight:700;color:#f0f5ff;letter-spacing:.03em;margin-bottom:14px}
.mini-title{margin:22px 0 12px;font-size:13px;font-weight:700;color:#dce8fa;letter-spacing:.03em}
.top-title{margin-top:20px}
.left-card{min-height:812px}
.live-value{font-size:22px;font-weight:800;letter-spacing:.04em;color:#f7fbff;margin:8px 0 4px}
.live-value span{font-size:49px;line-height:1;display:block}
.live-label{font-size:15px;color:#cfe0fb;letter-spacing:.03em}
.evolution-line{display:flex;align-items:center;gap:8px;font-size:13px;color:#8ac95e;margin-top:16px}
.evolution-arrow{font-size:18px;line-height:1}
.tiny-info{width:18px;height:18px;border-radius:50%;border:1px solid rgba(94,141,203,.7);background:rgba(8,25,49,.8);color:#9fc0ec;font-size:11px;padding:0;display:inline-flex;align-items:center;justify-content:center}

.donut-row{display:flex;align-items:center;gap:16px}
.donut{position:relative;width:126px;height:126px;border-radius:50%;background:conic-gradient(#1f72de 0 35%, #2c5fb0 35% 58%, #9bc645 58% 77%, #f2b539 77% 92%, #e14447 92% 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.05)}
.donut::before{content:"";position:absolute;inset:18px;border-radius:50%;background:#08172c;box-shadow:0 0 0 10px rgba(5,15,28,.12) inset}
.donut-hole{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:700;color:#8ba5cb}
.legend{display:grid;gap:7px;flex:1}
.legend div{display:grid;grid-template-columns:14px 1fr auto;gap:8px;align-items:center;font-size:12px;color:#c8d7ef}
.legend i{width:10px;height:10px;border-radius:50%;display:block}
.legend .c1{background:#1f72de}.legend .c2{background:#2c5fb0}.legend .c3{background:#9bc645}.legend .c4{background:#f2b539}.legend .c5{background:#e14447}
.legend b{font-weight:600;color:#a8bedf}
.top-list{list-style:none;padding:0;margin:0;display:grid;gap:14px}
.top-list li{display:grid;grid-template-columns:20px 1fr auto;gap:10px;align-items:center;font-size:13px;color:#dce7f7}
.top-list span{color:#a8bddf}
.top-list em{font-style:normal;color:#e4eefb}
.outline-btn{width:100%;margin-top:18px;height:38px;border-radius:8px;border:1px solid rgba(44,96,171,.85);background:transparent;color:#3f8df0;font-size:13px;font-weight:700;letter-spacing:.03em}

.map-card{min-height:462px;padding-bottom:12px}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.filter-chip{font-size:13px;color:#c8d9f2;border:1px solid rgba(39,71,114,.8);background:rgba(13,29,54,.72);padding:8px 12px;border-radius:8px}
.map-stage{display:grid;grid-template-columns:minmax(0,1fr) 255px;gap:18px;align-items:stretch;min-height:315px;padding-top:8px}
.map-visual{display:flex;align-items:center;justify-content:center;position:relative;min-height:290px}
.france-map{width:100%;height:100%;max-height:330px;display:block}
.fr-shape,.corsica{fill:url(#ftFill);stroke:rgba(123,167,236,.18);stroke-width:2}
.network-lines line{stroke:#5faeff;stroke-opacity:.2;stroke-width:1.15;filter:url(#ftGlow)}
.network-nodes circle{fill:#eef7ff;filter:url(#ftGlow)}
.kpi-stack{display:grid;gap:10px}
.kpi{border:1px solid rgba(27,52,84,.92);background:linear-gradient(180deg,rgba(12,29,55,.9),rgba(7,22,42,.92));border-radius:12px;padding:16px 16px 14px;min-height:64px}
.kpi span{display:block;font-size:12px;color:#d7e5fa;letter-spacing:.04em;margin-bottom:8px}
.kpi strong{display:block;font-size:20px;font-weight:800;color:#f4f8ff;margin-bottom:3px}
.kpi small{display:block;font-size:11px;color:#8fadcf}
.map-footer-stats{display:grid;grid-template-columns:repeat(3,1fr);margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.08)}
.map-footer-stats div{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;position:relative}
.map-footer-stats div+div::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:1px;background:rgba(255,255,255,.08)}
.map-footer-stats strong{font-size:28px;line-height:1;color:#f4fbff}
.map-footer-stats span{font-size:12px;color:#a8bbd9;text-transform:uppercase;letter-spacing:.04em}

.recent-card,.tenders-card,.alerts-card{padding-bottom:12px}
.expense-feed{display:grid;gap:5px;border-top:1px solid rgba(255,255,255,.06);padding-top:7px}
.expense-row{display:grid;grid-template-columns:44px 34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.expense-row time{font-size:13px;color:#aac1e4}
.expense-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:linear-gradient(180deg,#f7fbff,#dfe9f8);color:#725a4f;font-size:16px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.expense-row b{display:block;font-size:14px;color:#eef5ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.expense-row small{display:block;font-size:12px;color:#98accb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.expense-row em{font-style:normal;font-size:14px;font-weight:700;color:#ff5b63}

.small-feed{display:grid;gap:8px}
.feed-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.06)}
.feed-item b{display:block;font-size:13px;color:#ecf4ff;margin-bottom:5px}
.feed-item span{display:block;font-size:12px;color:#a0b3d0;line-height:1.45}
.feed-item em{font-style:normal;color:#9ac4fb}
.feed-item strong{font-size:14px;color:#d7e7ff;align-self:start}
.feed-item.placeholder strong{color:#91a8c9}

.alerts-list{display:grid;gap:8px}
.alert-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 0;border-top:1px solid rgba(255,255,255,.06)}
.alert-row:first-child{border-top:0;padding-top:2px}
.alert-icon{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#ff604d,#d94337);color:#fff;font-weight:800}
.alert-row.info .alert-icon{background:linear-gradient(180deg,#4694ff,#2267ce)}
.alert-row b{display:block;font-size:14px;color:#f3f8ff}
.alert-row small{display:block;font-size:12px;color:#9fb2cf;line-height:1.35}
.alert-row time{font-size:11px;color:#8ea6c9}

.ministries-card{grid-column:2 / 4;min-height:315px}
.ministry-table{display:grid;gap:0;border-top:1px solid rgba(255,255,255,.08)}
.mrow{display:grid;grid-template-columns:minmax(0,1fr) 160px 120px;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:14px;color:#e6f0fd}
.mhead{font-size:13px;font-weight:700;color:#a7bcdd;padding-top:10px}
.mrow span{display:flex;align-items:center;gap:10px;min-width:0}
.mrow b{font-weight:600;color:#f0f7ff}
.mrow em{font-style:normal;font-weight:700;color:#8dd661}
.ico{font-style:normal;font-size:17px;line-height:1}
.ico.red{color:#ef5a62}.ico.blue{color:#4c8df7}.ico.gold{color:#f1be4f}.ico.green{color:#77d26b}.ico.lime{color:#b7dd47}
.ministry-bottom{display:grid;grid-template-columns:1fr 42px;gap:10px;align-items:center;margin-top:14px}
.method-btn{width:42px;height:38px;border-radius:8px;border:1px solid rgba(44,96,171,.85);background:transparent;color:#70a9f8;font-size:16px}

.content-page{display:grid;gap:16px}
.page-title span{display:block;font-size:12px;font-weight:700;letter-spacing:.09em;color:#81a9e7;text-transform:uppercase;margin-bottom:8px}
.page-title h1{margin:0 0 10px;font-size:28px;line-height:1.15;color:#f8fbff}
.page-title p{margin:0;color:#a5bad8;line-height:1.6;font-size:15px}
.content-grid{display:grid;gap:16px}
.content-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.content-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.metrics-grid .card{min-height:190px}
.info-card h2,.roadmap-card h2,.unavailable-feature h2{margin:0 0 14px;font-size:18px;color:#f4f9ff}
.big-number{font-size:32px;line-height:1.1;font-weight:800;color:#f5faff;margin-bottom:12px}
.big-status{display:inline-flex;align-items:center;justify-content:center;min-width:126px;min-height:56px;border-radius:12px;padding:0 18px;background:rgba(15,41,79,.72);border:1px solid rgba(54,98,162,.7);font-size:26px;font-weight:800;margin-bottom:12px;color:#c7defe}
.big-status.planned{color:#f2c14b}
.info-card p,.roadmap-card p,.unavailable-feature p,.methodology p{margin:0;color:#a5b8d6;line-height:1.6}
.badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.04em;margin-right:6px}
.badge.live{background:rgba(71,191,95,.18);color:#8ae685}.badge.stale{background:rgba(255,183,0,.15);color:#f1cb5c}.badge.fallback{background:rgba(79,148,255,.17);color:#8cb7ff}.badge.error{background:rgba(240,90,103,.15);color:#ff9aa2}.badge.planned{background:rgba(240,194,90,.16);color:#f6cb72}.badge.unavailable{background:rgba(132,150,180,.13);color:#c0d0e6}.badge.calculated{background:rgba(67,137,255,.16);color:#96c2ff}
.methodology,.sources-card,.opportunity-card,.table-card{padding:18px}
.methodology h2,.opportunity-card .section-title{margin:0 0 14px}
.date-method{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.date-method div{padding:12px;border-radius:12px;background:rgba(10,28,52,.56);border:1px solid rgba(28,58,99,.72)}
.date-method b{display:block;margin-bottom:8px;color:#eaf2ff}
.date-method p{margin:0;color:#a7b8d2;line-height:1.55}
.unavailable-feature{display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;align-items:flex-start}
.feature-icon{width:52px;height:52px;border-radius:12px;background:linear-gradient(180deg,#ff684e,#d2443a);display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;font-size:26px}
.roadmap-card{position:relative}
.table-wrap{overflow:auto;border:1px solid rgba(29,57,95,.82);border-radius:12px}
table{width:100%;border-collapse:collapse;background:rgba(7,22,41,.72)}
thead th{font-size:13px;text-align:left;color:#c0d2ea;background:rgba(8,24,45,.98);padding:12px;border-bottom:1px solid rgba(255,255,255,.08);position:sticky;top:0}
tbody td{padding:12px;border-bottom:1px solid rgba(255,255,255,.06);font-size:13px;color:#e2ecfc;vertical-align:top}
tbody tr:nth-child(even){background:rgba(255,255,255,.01)}
tbody a{color:#71b0ff;text-decoration:none}
.toolbar{display:flex;align-items:end;gap:12px;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap}
.toolbar label{display:grid;gap:8px;font-size:12px;color:#adc2de;flex:1 1 240px}
.toolbar input,.toolbar select{height:40px;border-radius:10px;border:1px solid rgba(34,70,116,.82);background:rgba(10,26,49,.9);color:#edf5ff;padding:0 12px}
.scope-note{font-size:12px;color:#9db4d4;margin-bottom:12px;line-height:1.5}
.documents-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.document-card{padding:16px;border-radius:14px;background:linear-gradient(180deg,rgba(8,23,44,.95),rgba(6,20,37,.95));border:1px solid rgba(26,54,90,.86);box-shadow:var(--shadow)}
.document-card b{display:block;font-size:17px;color:#f3f8ff;margin-bottom:10px}
.document-card p{margin:0 0 12px;color:#a6b8d7;line-height:1.55;font-size:14px}
.document-card a{color:#6eb2ff;text-decoration:none;font-weight:600}
.sources-list{display:grid;gap:10px}
.source-row{display:grid;grid-template-columns:minmax(0,2.1fr) repeat(3,minmax(110px,1fr)) 120px;gap:12px;align-items:center;padding:14px;border-radius:12px;background:rgba(9,24,45,.58);border:1px solid rgba(25,50,82,.72)}
.source-name b{display:block;font-size:15px;color:#f1f6ff;margin-bottom:5px}
.source-name small{display:block;font-size:12px;color:#99aecb;line-height:1.45}
.source-meta span{display:block;font-size:11px;color:#8ca3c4;margin-bottom:4px;text-transform:uppercase;letter-spacing:.05em}
.source-meta b{font-size:13px;color:#e7f1ff}
.source-status{display:grid;justify-items:start;gap:8px}
.opportunity-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.opportunity-grid article{padding:14px;border-radius:12px;background:rgba(8,23,44,.68);border:1px solid rgba(26,56,94,.72)}
.opportunity-grid b{display:block;margin-bottom:8px;color:#edf5ff}
.opportunity-grid span{display:block;font-size:13px;color:#a6b9d6;line-height:1.55}
.search-results-panel{position:fixed;right:18px;top:120px;width:min(720px,calc(100vw - 36px));max-height:72vh;overflow:auto;z-index:30;background:linear-gradient(180deg,rgba(8,23,44,.98),rgba(6,18,34,.98));border:1px solid rgba(29,61,100,.92);border-radius:16px;box-shadow:0 20px 50px rgba(0,0,0,.42);padding:16px}
.search-results-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}
.search-results-head span{display:block;font-size:12px;font-weight:700;letter-spacing:.08em;color:#82abe5;margin-bottom:6px}
.search-results-head h2{margin:0;font-size:22px}
.search-results-head button{height:38px;border-radius:10px;border:1px solid rgba(35,69,112,.82);background:transparent;color:#d9e6f9;padding:0 14px}
.search-result{padding:14px 0;border-top:1px solid rgba(255,255,255,.06)}
.search-result b{display:block;margin-bottom:6px;color:#f0f7ff}
.search-result small{display:block;color:#9cb0ce;margin-bottom:8px;line-height:1.5}
.search-result a{color:#68adfd;text-decoration:none;font-weight:600}
.footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px 28px;color:#8da4c6;font-size:12px;line-height:1.5}

@media (max-width: 1320px){
  .topbar{grid-template-columns:240px 1fr 360px}
  .dashboard-grid{grid-template-columns:260px minmax(0,1fr) 380px}
  .documents-grid,.opportunity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width: 1120px){
  .topbar{grid-template-columns:1fr;justify-items:center;text-align:center}
  .top-actions{width:100%;justify-content:center;flex-wrap:wrap}
  .searchbox{max-width:420px}
  .mainnav{overflow:auto;white-space:nowrap}
  .dashboard-grid{grid-template-columns:1fr}
  .ministries-card{grid-column:auto}
  .left-card{min-height:auto}
  .map-stage{grid-template-columns:1fr}
  .content-grid.two,.content-grid.three,.documents-grid,.opportunity-grid,.date-method{grid-template-columns:1fr}
  .source-row{grid-template-columns:1fr}
  .footer{flex-direction:column;align-items:flex-start}
}
@media (max-width: 720px){
  main{padding:12px}
  .topbar{padding:14px 12px 12px}
  .mainnav{padding:0 10px}
  .navitem{padding:12px 12px;font-size:12px}
  .masthead-title{font-size:24px}
  .brand-copy{font-size:12px}
  .map-footer-stats{grid-template-columns:1fr;gap:10px}
  .map-footer-stats div+div::before{display:none}
  .expense-row{grid-template-columns:38px 30px minmax(0,1fr) auto}
  .mrow{grid-template-columns:minmax(0,1fr) 115px 70px;font-size:13px}
  .live-value span{font-size:40px}
}

/* ===============================
   V0.4 — structure maître + motion
   =============================== */
.dashboard-grid{grid-template-columns:286px minmax(0,1fr) 432px;align-items:stretch}
.center-stack,.right-stack{display:grid;gap:16px;align-content:start;min-width:0}
.left-card{min-height:0;height:100%}
.ministries-card{grid-column:auto;min-height:315px}
.map-card{min-height:462px;overflow:visible}

/* Donut neutre : aucune proportion n'est suggérée quand la donnée manque. */
.neutral-donut{background:conic-gradient(from 0deg,#294a70 0 72%,#182d49 72% 100%);position:relative}
.neutral-donut::after{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 180deg,transparent 0 76%,rgba(103,168,255,.36) 82%,transparent 89%);filter:blur(.2px);animation:neutralRing 9s linear infinite}
.neutral-donut .donut-hole{z-index:2;flex-direction:column;gap:3px;font-size:9px;letter-spacing:.08em;color:#8ea8c9}
.neutral-donut .donut-hole b{font-size:11px;color:#b8cae1;letter-spacing:.04em}
.legend i{background:#36506f!important;opacity:.82}

/* Synchronisation stale-while-revalidate */
.sync-overlay{position:fixed;inset:0;z-index:100;background:radial-gradient(circle at 50% 32%,rgba(19,67,130,.28),transparent 42%),rgba(2,9,18,.94);display:flex;align-items:center;justify-content:center;padding:20px;opacity:1;transition:opacity .42s ease,visibility .42s ease}
.sync-overlay.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
.sync-card{width:min(650px,94vw);border:1px solid rgba(60,111,177,.55);border-radius:18px;background:linear-gradient(180deg,rgba(7,25,48,.98),rgba(4,16,31,.98));box-shadow:0 30px 80px rgba(0,0,0,.55),0 0 38px rgba(40,112,224,.09);padding:24px}
.sync-brand{text-align:center;font-weight:900;letter-spacing:.11em;font-size:25px;color:#f5f9ff}
.sync-title{text-align:center;font-size:13px;letter-spacing:.12em;color:#8fb7f0;margin-top:8px}
.sync-subtitle{text-align:center;font-size:12px;line-height:1.55;color:#8fa5c5;margin:10px auto 18px;max-width:520px}
.sync-sources{display:grid;gap:7px;padding:12px;border-radius:12px;background:rgba(2,13,27,.58);border:1px solid rgba(31,65,108,.58)}
.sync-row{display:grid;grid-template-columns:20px 1fr auto;gap:9px;align-items:center;font-size:12px;padding:4px 0;color:#d9e6f8}
.sync-state{width:16px;height:16px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:900;background:rgba(65,140,255,.15);color:#7eb1ff;border:1px solid rgba(72,139,238,.4)}
.sync-row.live .sync-state{background:rgba(91,201,93,.14);color:#8de58b;border-color:rgba(91,201,93,.38)}
.sync-row.warn .sync-state{background:rgba(238,183,70,.13);color:#f3ca72;border-color:rgba(238,183,70,.35)}
.sync-row.error .sync-state{background:rgba(238,85,99,.13);color:#ff9ca6;border-color:rgba(238,85,99,.35)}
.sync-row.planned .sync-state{background:rgba(125,145,175,.11);color:#9fb1ca;border-color:rgba(125,145,175,.25)}
.sync-row small{color:#7f98ba}
.sync-footer{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:14px;font-size:11px;color:#91a9c9}
.sync-spinner{width:18px;height:18px;border-radius:50%;border:2px solid rgba(87,144,220,.22);border-top-color:#67a9ff;animation:spin .8s linear infinite}

/* Filtre fonctionnel, sans prétendre disposer des index non encore chargés. */
.filter-wrap{position:relative;z-index:20}
.filter-chip{border:1px solid rgba(39,71,114,.8);background:rgba(13,29,54,.72);color:#c8d9f2}
.filter-panel{position:absolute;right:0;top:calc(100% + 8px);width:330px;padding:14px;border:1px solid rgba(42,82,133,.9);border-radius:12px;background:linear-gradient(180deg,rgba(7,24,46,.99),rgba(4,17,33,.99));box-shadow:0 18px 45px rgba(0,0,0,.46);display:grid;gap:10px}
.filter-panel label{display:grid;gap:5px;font-size:11px;color:#9eb4d2;text-transform:uppercase;letter-spacing:.04em}
.filter-panel select{height:36px;border-radius:8px;border:1px solid rgba(38,74,119,.8);background:#081a31;color:#e4effe;padding:0 8px;font-size:12px;text-transform:none;letter-spacing:0}
.filter-panel select:disabled{opacity:.55}
.filter-panel small{font-size:10px;color:#8098ba;line-height:1.45}
.filter-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.filter-actions button{height:34px;border-radius:8px;border:1px solid rgba(48,96,162,.8);background:rgba(19,53,96,.65);color:#9dc5ff;font-size:11px;font-weight:800}
.filter-actions button+button{background:transparent;color:#91a8c7}
.filter-chip.has-filter{color:#d6e8ff;border-color:#4d92e8;box-shadow:0 0 0 1px rgba(77,146,232,.16),0 0 18px rgba(55,127,225,.1)}

/* Modal de connexion honnête */
.modal-backdrop{position:fixed;inset:0;z-index:90;background:rgba(0,5,12,.74);display:flex;align-items:center;justify-content:center;padding:18px;backdrop-filter:blur(5px)}
.modal-card{position:relative;width:min(500px,94vw);padding:26px;border-radius:18px;border:1px solid rgba(46,88,142,.9);background:linear-gradient(180deg,#091d36,#061426);box-shadow:0 28px 70px rgba(0,0,0,.55);text-align:center}
.modal-card h2{margin:10px 0 10px;font-size:22px;color:#f5f9ff}
.modal-card p{margin:0;color:#a6bad7;line-height:1.6;font-size:14px}
.modal-icon{margin:0 auto;width:54px;height:54px;border-radius:15px;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#235c9e,#133765);font-weight:900;letter-spacing:.06em;border:1px solid rgba(120,172,236,.5)}
.modal-close{position:absolute;top:10px;right:10px;width:34px;height:34px;border-radius:9px;border:1px solid rgba(50,84,128,.7);background:transparent;color:#9fb5d3;font-size:20px}
.modal-card .outline-btn{max-width:180px}

/* Centre de contrôle : micro-interactions */
.card{animation:cardReveal .55s cubic-bezier(.22,.61,.36,1) both}
.dashboard-grid>.left-card{animation-delay:.03s}.center-stack>.card:nth-child(1){animation-delay:.08s}.center-stack>.card:nth-child(2){animation-delay:.13s}.right-stack>.card:nth-child(1){animation-delay:.11s}.right-stack>.card:nth-child(2){animation-delay:.16s}.right-stack>.card:nth-child(3){animation-delay:.21s}
.outline-btn,.login-btn,.navitem,.filter-chip,.method-btn{transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease,color .16s ease}
.outline-btn:hover,.login-btn:hover,.filter-chip:hover,.method-btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px rgba(24,89,173,.14)}
.navitem::after{transition:left .18s ease,right .18s ease,opacity .18s ease}
.network-nodes circle{transform-box:fill-box;transform-origin:center;animation:nodeTwinkle 3.4s ease-in-out infinite}
.network-lines line{stroke-dasharray:8 18;animation:linePulse 9s linear infinite}
.alert-row .alert-icon{animation:alertBreathe 3s ease-in-out infinite}
.badge.live{animation:livePulse 2.4s ease-in-out infinite}
.value-updated{animation:valueFlash 1.8s ease-out 1}

@keyframes cardReveal{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@keyframes nodeTwinkle{0%,100%{opacity:.48;transform:scale(.8)}50%{opacity:1;transform:scale(1.28)}}
@keyframes linePulse{to{stroke-dashoffset:-130}}
@keyframes alertBreathe{0%,100%{box-shadow:0 0 0 rgba(255,87,73,0)}50%{box-shadow:0 0 14px rgba(255,87,73,.18)}}
@keyframes livePulse{0%,100%{box-shadow:0 0 0 rgba(91,201,93,0)}50%{box-shadow:0 0 12px rgba(91,201,93,.12)}}
@keyframes valueFlash{0%{text-shadow:0 0 0 rgba(79,155,255,0)}25%{text-shadow:0 0 20px rgba(79,155,255,.8)}100%{text-shadow:0 0 0 rgba(79,155,255,0)}}
@keyframes neutralRing{to{transform:rotate(360deg)}}
@keyframes spin{to{transform:rotate(360deg)}}

@media (max-width:1320px){.dashboard-grid{grid-template-columns:260px minmax(0,1fr) 380px}}
@media (max-width:1120px){.dashboard-grid{grid-template-columns:1fr}.left-card{height:auto}.center-stack,.right-stack{display:grid}.filter-panel{right:auto;left:0;width:min(330px,88vw)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}
.radar-card{padding:18px}
.radar-list{display:grid;gap:10px}
.radar-row{display:grid;grid-template-columns:minmax(0,1fr) 150px;gap:16px;align-items:center;padding:14px;border-radius:12px;background:rgba(8,23,44,.62);border:1px solid rgba(28,58,96,.76)}
.radar-row b{display:inline-block;margin-left:8px;color:#eef6ff;font-size:15px}
.radar-row span:not(.badge){display:block;margin-top:8px;color:#d7e4f6;font-weight:600}
.radar-row small{display:block;margin-top:5px;color:#97acc9;line-height:1.45}
.radar-meta{display:grid;justify-items:end;gap:8px;color:#91a8c8;font-size:12px}
.radar-meta a{color:#6db0ff;text-decoration:none;font-weight:700}
.feed-enter{animation:feedIn .42s ease both}
.table-enter{animation:tableIn .34s ease both}
@keyframes feedIn{from{opacity:0;transform:translateX(8px)}to{opacity:1;transform:translateX(0)}}
@keyframes tableIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
/* V0.4 QA 1536×1024 : resserrement vertical pour coller à la maquette maître. */
.map-card{min-height:0;padding-top:12px;padding-bottom:10px}
.map-stage{min-height:0;height:310px;grid-template-columns:minmax(0,1fr) 255px;gap:16px;padding-top:4px}
.map-visual{min-height:0;height:310px}
.france-map{max-height:310px}
.kpi-stack{gap:7px;align-content:center}
.kpi{min-height:0;height:69px;padding:10px 14px;border-radius:10px}
.kpi span{font-size:11px;margin-bottom:5px}
.kpi strong{font-size:18px;margin-bottom:2px}
.kpi small{font-size:10px;line-height:1.25}
.map-footer-stats{margin-top:10px;padding-top:10px}
.map-footer-stats strong{font-size:24px}
.map-footer-stats span{font-size:11px}
.ministries-card{min-height:0;padding-top:12px;padding-bottom:10px}
.ministries-card .section-title{margin-bottom:10px}
.mrow{padding:8px 0;font-size:13px}
.mhead{padding-top:7px;padding-bottom:8px;font-size:12px}
.ministry-bottom{margin-top:8px}
.ministry-bottom .outline-btn{margin-top:0;height:34px}
.method-btn{height:34px}
/* Ajustement vertical final d'après comparaison 1536×1024 avec l'image maître. */
.map-stage{height:330px}
.map-visual{height:330px}
.france-map{max-height:330px}
.mrow{padding:10px 0}
.mhead{padding-top:8px;padding-bottom:9px}
.ministry-bottom{margin-top:10px}
.expense-row{padding:5px 0;min-height:47px}
.expense-row b{font-size:13px}
.expense-row small{font-size:11px}
.expense-icon{width:27px;height:27px}
.recent-card .outline-btn{margin-top:10px}
.tenders-card .small-feed{gap:0}
.tenders-card .feed-item{padding:9px 0;min-height:55px;align-items:center}
.tenders-card .feed-item b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}
.tenders-card .feed-item span{font-size:11px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tenders-card .feed-item strong{font-size:12px;white-space:nowrap}
.tenders-card .outline-btn{margin-top:10px}
.alerts-card{padding-top:12px;padding-bottom:10px}
.alerts-card .section-title{margin-bottom:8px}
.alerts-card .alert-row{padding:5px 0}
.alerts-card .alert-row b{font-size:12px}
.alerts-card .alert-row small{font-size:10px;line-height:1.25}
.alerts-card .alert-icon{width:25px;height:25px}

/* ===============================
   V0.5 — audit P0 + pixel pass
   =============================== */
.topbar{padding:9px 18px 7px;min-height:98px}
.masthead{gap:4px;position:relative}
.masthead-meta{display:flex;align-items:center;justify-content:center;gap:10px;min-height:18px}
.masthead-disclaimer{font-size:9px;letter-spacing:.09em;white-space:nowrap}
.header-sync{display:inline-flex;align-items:center;gap:6px;height:20px;padding:0 8px;border-radius:999px;border:1px solid rgba(58,105,165,.58);background:rgba(9,28,52,.72);color:#9bbce7;font-size:9px;font-weight:800;letter-spacing:.035em;white-space:nowrap}
.header-sync:hover{border-color:#4c91e5;color:#dbeaff}
.sync-dot{width:6px;height:6px;border-radius:50%;background:#6b87ad;box-shadow:0 0 0 rgba(73,145,236,0)}
.header-sync.is-running .sync-dot{background:#61a8ff;animation:syncDot 1.1s ease-in-out infinite}
.header-sync.is-live .sync-dot{background:#75d66a;box-shadow:0 0 8px rgba(117,214,106,.3)}
.header-sync.is-error .sync-dot{background:#f0646e;box-shadow:0 0 8px rgba(240,100,110,.28)}
@keyframes syncDot{0%,100%{opacity:.45;box-shadow:0 0 0 rgba(73,145,236,0)}50%{opacity:1;box-shadow:0 0 12px rgba(73,145,236,.52)}}

.navicon{width:15px;height:15px;display:block;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;opacity:.86}
.navitem span{display:none}

@media (min-width:1400px){
  .dashboard-grid{grid-template-columns:286px 731px 432px;width:1481px;max-width:100%}
}
.map-stage{grid-template-columns:minmax(0,1fr) 255px}
.france-map{width:100%;height:100%;max-height:340px;overflow:visible}
.network-lines line{stroke-opacity:.30;stroke-width:1.05}
.network-nodes circle{filter:url(#ftGlow)}

.active-filter-note{margin:-4px 0 6px;padding:5px 9px;border-radius:8px;background:rgba(25,67,117,.26);border:1px solid rgba(50,103,169,.42);font-size:10px;color:#a8c8ef;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.filter-target{transition:opacity .2s ease,filter .2s ease,border-color .2s ease,box-shadow .2s ease}
.filter-target.filter-muted{opacity:.28;filter:saturate(.45)}
.filter-target.filter-match{border-color:rgba(70,137,226,.78);box-shadow:0 12px 28px rgba(0,0,0,.28),0 0 18px rgba(47,121,221,.10)}

.sync-status-panel{position:fixed;z-index:95;top:92px;right:18px;width:min(520px,calc(100vw - 36px));max-height:76vh;overflow:auto;padding:16px;border:1px solid rgba(49,94,152,.92);border-radius:14px;background:linear-gradient(180deg,rgba(7,24,46,.99),rgba(4,17,33,.99));box-shadow:0 22px 60px rgba(0,0,0,.55)}
.sync-status-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.sync-status-head span{display:block;font-size:10px;letter-spacing:.08em;color:#79a8e5;margin-bottom:4px}
.sync-status-head h2{margin:0;font-size:18px;color:#f2f7ff}
.sync-status-head button{width:32px;height:32px;border-radius:8px;border:1px solid rgba(52,87,132,.72);background:transparent;color:#a8bdd9;font-size:20px}
.sync-progress{height:7px;margin:14px 0 9px;border-radius:999px;overflow:hidden;background:#071426;border:1px solid rgba(36,72,118,.58)}
.sync-progress>div{height:100%;width:0;background:linear-gradient(90deg,#316fc5,#6ab2ff);transition:width .35s ease}
.sync-status-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;align-items:stretch;font-size:9px;color:#8fa8c8;margin-bottom:8px}
.sync-status-metrics b{display:flex;align-items:center;justify-content:center;min-height:34px;padding:7px 8px;border-radius:8px;border:1px solid rgba(42,78,125,.62);background:rgba(8,28,54,.72);color:#dbe9fb;text-align:center;line-height:1.25}
.sync-status-event{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin-bottom:10px;padding:7px 9px;border-radius:8px;background:rgba(5,20,39,.58);border:1px solid rgba(35,68,108,.48);font-size:10px;color:#91a8c7}
.sync-status-event em{font-style:normal;color:#7ed26e;white-space:nowrap}
.sync-status-sources{display:grid;gap:5px}
.sync-status-sources .sync-row{padding:5px 2px;border-top:1px solid rgba(255,255,255,.04)}
.sync-log-title{display:flex;justify-content:space-between;gap:12px;align-items:end;margin:13px 0 7px;padding-top:10px;border-top:1px solid rgba(255,255,255,.07)}
.sync-log-title span{font-size:10px;font-weight:800;letter-spacing:.08em;color:#c7dcf8}
.sync-log-title small{font-size:9px;color:#7f98b9;text-align:right}
.sync-log{display:grid;max-height:190px;overflow:auto;border:1px solid rgba(29,60,101,.58);border-radius:9px;background:rgba(4,15,30,.58)}
.sync-log-row{display:grid;grid-template-columns:78px 74px 94px 58px minmax(0,1fr);gap:7px;align-items:center;padding:6px 8px;border-top:1px solid rgba(255,255,255,.04);font-size:9px;color:#8ea6c7}
.sync-log-row:first-child{border-top:0}
.sync-log-row time{color:#7792b5}.sync-log-row b{color:#d8e7fa;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sync-log-row span{color:#9eb9db}.sync-log-row em{font-style:normal;font-weight:800;font-size:8px;letter-spacing:.04em}.sync-log-row em.internet{color:#77b9ff}.sync-log-row em.cache,.sync-log-row em.local{color:#9fc46b}.sync-log-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#7f95b4}
.sync-log-empty{padding:10px;color:#7f96b7;font-size:10px}

.sync-sources{max-height:430px;overflow:auto}
.sync-unavailable{margin-top:6px;padding:7px 9px;border-radius:8px;border:1px solid rgba(111,129,157,.22);background:rgba(111,129,157,.06);font-size:10px;color:#8ea1be}

/* Header plus compact : la page démarre au même niveau que l'image maître. */
main{padding-top:18px}

@media (max-width:1120px){
  .masthead-meta{flex-wrap:wrap}
  .header-sync{height:22px}
  .sync-status-panel{top:130px}
}
.source-row{grid-template-columns:minmax(0,1.8fr) repeat(4,minmax(105px,.9fr)) 120px}
@media (max-width:1320px){.source-row{grid-template-columns:1fr 1fr 1fr}.source-name{grid-column:1 / -1}.source-status{grid-column:1 / -1}}
@media (max-width:820px){.source-row{grid-template-columns:1fr}.source-name,.source-status{grid-column:auto}}
.source-focus-overlay{position:absolute;inset:24px 22px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border-radius:16px;background:radial-gradient(circle,rgba(8,34,67,.96),rgba(4,18,36,.86));border:1px solid rgba(74,135,214,.55);box-shadow:0 0 38px rgba(51,127,224,.12);z-index:5;animation:cardReveal .28s ease both}
.source-focus-overlay span{font-size:9px;letter-spacing:.12em;color:#7fa8da;margin-bottom:8px}
.source-focus-overlay b{font-size:15px;color:#dbeaff;margin-bottom:8px}
.source-focus-overlay strong{font-size:30px;color:#f4f9ff;margin-bottom:8px}
.source-focus-overlay small{font-size:10px;color:#8fabcc}
/* V0.5 — alignement final 1536×1024 avec l'image maître. */
@media (min-width:1400px){
  .right-stack{gap:10px}
  .map-stage,.map-visual{height:339px}
  .france-map{max-height:339px}
  .map-content{transform-box:view-box;transform-origin:300px 235px;transform:scale(1.13)}
  .mrow{padding:11px 0}
  .ministry-bottom{margin-top:11px}
  .expense-row{min-height:45px;padding:4px 0}
  .tenders-card .feed-item{min-height:60px;padding:10px 0}
}

@media (max-width:720px){
  .sync-status-metrics{grid-template-columns:1fr}
  .sync-status-event{grid-template-columns:1fr}
  .sync-log-row{grid-template-columns:70px 64px minmax(0,1fr)}
  .sync-log-row em,.sync-log-row small{display:none}
  .sync-log-title{align-items:flex-start;flex-direction:column}
  .sync-log-title small{text-align:left}
}

/* ========================================================================
   V0.13 — PORTAIL DE DONNÉES PUBLIQUES / EXPÉRIENCE VIVANTE / SALLE DE SITUATION
   ======================================================================== */
.control-btn{height:36px;padding:0 10px;border-radius:8px;border:1px solid rgba(42,79,126,.75);background:rgba(7,24,47,.72);color:#a8bfdf;font-size:9px;font-weight:800;letter-spacing:.06em;white-space:nowrap;transition:transform .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease}
.control-btn:hover,.control-btn:focus-visible{transform:translateY(-1px);border-color:rgba(82,141,219,.88);color:#e6f2ff;box-shadow:0 8px 20px rgba(0,0,0,.24),0 0 16px rgba(55,128,220,.08)}
.control-btn[aria-pressed="true"]{color:#87d8ff;border-color:rgba(68,144,230,.9);background:rgba(23,73,128,.38)}
.top-actions{gap:8px}
.login-btn{height:36px;padding:0 18px;font-size:10px}
.searchbox{height:36px;max-width:260px}
@media (min-width:1400px){.topbar{grid-template-columns:280px minmax(390px,1fr) 620px}}

.experience-deck{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px;margin-top:16px}
.experience-card{position:relative;min-height:210px;padding:16px;background:linear-gradient(180deg,rgba(7,24,46,.97),rgba(4,18,35,.97));border-color:rgba(29,62,103,.88)}
.daily-brief-card{grid-column:span 12;min-height:auto}
.activity-card{grid-column:span 5}
.moving-card{grid-column:span 7}
.watch-card{grid-column:span 5}
.timeline-card{grid-column:span 7}
.favorites-card{grid-column:span 12;min-height:auto}
.experience-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:13px}
.experience-head h2{margin:3px 0 0;font-size:15px;color:#edf5ff;font-weight:700;line-height:1.25}
.eyebrow{display:block;font-size:9px;letter-spacing:.12em;font-weight:800;color:#6ea9f2}
.period-tabs{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.period-tab,.mini-action{height:27px;padding:0 9px;border-radius:7px;border:1px solid rgba(39,77,125,.72);background:rgba(7,24,46,.66);color:#819abc;font-size:8px;font-weight:800;letter-spacing:.05em}
.period-tab.active,.period-tab:hover,.mini-action:hover{color:#dff0ff;border-color:rgba(73,137,219,.82);background:rgba(28,78,136,.3)}
.summary-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:9px}
.summary-metrics>div{position:relative;padding:11px 12px;border:1px solid rgba(32,65,107,.6);border-radius:10px;background:linear-gradient(180deg,rgba(9,30,58,.72),rgba(6,21,41,.62));overflow:hidden}
.summary-metrics>div::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(76,151,245,.35),transparent)}
.summary-metrics strong{display:block;font-size:24px;line-height:1;color:#f4f9ff;margin-bottom:7px}
.summary-metrics span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.04em;color:#839aba;line-height:1.35}
.scope-note.compact{margin:10px 0 0;font-size:9px;color:#6e86a8}

.public-activity-feed{display:grid;gap:0;max-height:320px;overflow:auto;border-top:1px solid rgba(255,255,255,.055)}
.public-activity-row{display:grid;grid-template-columns:48px 8px minmax(0,1fr) auto;gap:9px;align-items:start;padding:9px 2px;border-bottom:1px solid rgba(255,255,255,.045);animation:activityReveal .36s ease both}
.public-activity-row time{font-size:9px;color:#718caf;padding-top:2px;white-space:nowrap}
.activity-pip{width:7px;height:7px;border-radius:50%;margin-top:3px;background:#5b8fcf;box-shadow:0 0 0 rgba(88,161,250,0)}
.public-activity-row.is-new .activity-pip{background:#63b4ff;box-shadow:0 0 12px rgba(79,165,255,.45)}
.public-activity-row.is-warn .activity-pip{background:#e7a14c;box-shadow:0 0 10px rgba(231,161,76,.28)}
.public-activity-row b{display:block;font-size:10px;color:#dce9f9;margin-bottom:3px;line-height:1.3}
.public-activity-row small{display:block;font-size:9px;color:#7d94b4;line-height:1.35}
.activity-source{font-size:8px;font-weight:800;letter-spacing:.05em;color:#6fa9ef;border:1px solid rgba(58,111,177,.45);border-radius:999px;padding:3px 6px;white-space:nowrap}
.activity-empty,.trend-placeholder{padding:18px 12px;color:#7891b3;font-size:10px;text-align:center;border:1px dashed rgba(51,83,124,.42);border-radius:9px;background:rgba(5,18,35,.35)}
@keyframes activityReveal{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

.moving-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.trend-card{position:relative;min-height:104px;padding:11px 12px;border:1px solid rgba(31,65,107,.6);border-radius:10px;background:rgba(7,25,49,.62);overflow:hidden}
.trend-card .trend-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.trend-card .trend-head span{font-size:9px;color:#859bb9;text-transform:uppercase;letter-spacing:.04em}
.trend-card strong{display:block;font-size:18px;color:#edf6ff;margin:7px 0 2px}
.trend-card em{font-style:normal;font-size:9px;font-weight:800;color:#8fc86d}
.trend-card em.down{color:#ef777f}.trend-card em.neutral{color:#8ca2c2}
.sparkline{height:34px;margin-top:5px}
.sparkline svg{width:100%;height:100%;overflow:visible}
.sparkline path{fill:none;stroke:#5daeff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgba(70,153,255,.22));stroke-dasharray:300;stroke-dashoffset:300;animation:sparkDraw .75s ease forwards}
.sparkline .area{fill:url(#sparkFill);stroke:none;opacity:.28;animation:none}
@keyframes sparkDraw{to{stroke-dashoffset:0}}
.live-meaning,.local-only{font-size:8px;color:#758daf;text-align:right;max-width:190px;line-height:1.4}

.watch-list{display:grid;gap:6px}
.watch-row{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:9px;align-items:center;padding:9px 1px;border-top:1px solid rgba(255,255,255,.045)}
.watch-row:first-child{border-top:0}
.watch-light{width:7px;height:7px;border-radius:50%;background:#5f8fc5}
.watch-row.due .watch-light{background:#e6ad54;box-shadow:0 0 10px rgba(230,173,84,.25)}
.watch-row.late .watch-light{background:#ed747c;box-shadow:0 0 10px rgba(237,116,124,.30)}
.watch-row b{display:block;font-size:10px;color:#dceafb;margin-bottom:3px}
.watch-row small{display:block;font-size:8px;color:#758eaf;line-height:1.35}
.watch-row time{font-size:8px;color:#88a1c2;white-space:nowrap;text-align:right}

.activity-timeline{position:relative;min-height:135px;padding:22px 8px 8px;display:flex;align-items:flex-start;gap:0;overflow-x:auto;overflow-y:hidden}
.activity-timeline::before{content:"";position:absolute;left:12px;right:12px;top:34px;height:1px;background:linear-gradient(90deg,rgba(64,119,188,.2),rgba(73,143,229,.6),rgba(64,119,188,.2))}
.timeline-event{position:relative;flex:0 0 120px;padding-top:27px;text-align:center;animation:activityReveal .35s ease both}
.timeline-event::before{content:"";position:absolute;top:8px;left:50%;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:#5daeff;border:2px solid #08172c;box-shadow:0 0 12px rgba(70,158,255,.28)}
.timeline-event.warn::before{background:#e7a04a;box-shadow:0 0 10px rgba(231,160,74,.28)}
.timeline-event b{display:block;font-size:8px;color:#b9cee8;line-height:1.3;max-height:31px;overflow:hidden}
.timeline-event small{display:block;font-size:7px;color:#7189a8;margin-top:4px}
.timeline-event time{display:block;font-size:8px;color:#5f79a0;margin-top:4px}

.favorites-list{display:flex;gap:8px;flex-wrap:wrap}
.favorite-pill{display:flex;align-items:center;gap:7px;min-height:32px;padding:6px 8px;border:1px solid rgba(43,82,130,.62);border-radius:999px;background:rgba(8,28,53,.65);font-size:9px;color:#afc3df}
.favorite-pill button{border:0;background:transparent;color:#f2c75c;padding:0;font-size:13px;line-height:1}
.favorite-toggle{position:absolute;right:10px;top:10px;width:26px;height:26px;border-radius:8px;border:1px solid rgba(44,82,128,.62);background:rgba(5,20,39,.72);color:#8ea6c7;display:flex;align-items:center;justify-content:center;font-size:14px;z-index:3;transition:color .18s ease,border-color .18s ease,transform .18s ease}
.favorite-toggle:hover{transform:scale(1.05);border-color:rgba(78,139,216,.82)}
.favorite-toggle.is-favorite{color:#f5ca62;border-color:rgba(209,167,67,.65);text-shadow:0 0 8px rgba(245,202,98,.28)}
.favorite-target{position:relative}

.since-visit-panel{position:fixed;z-index:93;right:18px;bottom:48px;width:min(390px,calc(100vw - 36px));padding:15px 16px 13px;border:1px solid rgba(52,103,168,.82);border-radius:14px;background:linear-gradient(180deg,rgba(8,29,56,.98),rgba(4,18,35,.98));box-shadow:0 22px 55px rgba(0,0,0,.48),0 0 24px rgba(42,112,203,.07);animation:sinceVisitIn .45s cubic-bezier(.2,.8,.2,1) both}
@keyframes sinceVisitIn{from{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:none}}
.since-visit-close{position:absolute;right:9px;top:8px;border:0;background:transparent;color:#7791b2;font-size:17px}
.since-visit-panel>strong{display:block;margin:7px 25px 9px 0;font-size:16px;line-height:1.3;color:#edf6ff}
.since-visit-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.since-visit-stats div{padding:7px 8px;border-radius:8px;background:rgba(8,29,55,.66);border:1px solid rgba(37,73,118,.5)}
.since-visit-stats b{display:block;font-size:16px;color:#78b9ff}.since-visit-stats span{display:block;font-size:8px;color:#7f97b8;text-transform:uppercase}
.since-visit-panel .outline-btn{margin-top:10px;height:31px;font-size:9px}
.since-visit-chip{position:fixed;right:18px;bottom:48px;z-index:92;height:32px;padding:0 12px;border-radius:999px;border:1px solid rgba(49,101,164,.72);background:rgba(7,27,51,.94);color:#83baf8;font-size:8px;font-weight:800;letter-spacing:.05em;box-shadow:0 12px 28px rgba(0,0,0,.34)}

.live-ribbon{position:fixed;z-index:88;left:0;right:0;bottom:0;height:34px;display:grid;grid-template-columns:145px minmax(0,1fr);align-items:center;border-top:1px solid rgba(37,76,124,.72);background:rgba(3,15,29,.97);box-shadow:0 -9px 24px rgba(0,0,0,.25);backdrop-filter:blur(10px)}
.ribbon-label{height:100%;border:0;border-right:1px solid rgba(37,76,124,.58);background:linear-gradient(90deg,rgba(18,55,100,.72),rgba(7,25,49,.6));color:#a9cbf6;font-size:9px;font-weight:900;letter-spacing:.08em;display:flex;align-items:center;justify-content:center;gap:7px}
.ribbon-dot{width:7px;height:7px;border-radius:50%;background:#57a8ff;box-shadow:0 0 10px rgba(79,164,255,.5);animation:syncDot 2.7s ease-in-out infinite}
.ribbon-viewport{overflow:hidden;white-space:nowrap;mask-image:linear-gradient(90deg,transparent,#000 2%,#000 98%,transparent)}
.ribbon-track{display:inline-flex;align-items:center;gap:28px;min-width:100%;padding-left:20px;animation:ribbonMove 48s linear infinite;will-change:transform}
.ribbon-track:hover{animation-play-state:paused}
.ribbon-item{display:inline-flex;align-items:center;gap:8px;font-size:9px;color:#91a9c9;text-decoration:none}
.ribbon-item b{color:#cfe3fa;font-weight:700}.ribbon-item em{font-style:normal;color:#65adff;font-weight:800}.ribbon-sep{color:#2e5a8e}
@keyframes ribbonMove{from{transform:translateX(0)}to{transform:translateX(-50%)}}
body{padding-bottom:34px}

.info-tooltip{position:fixed;z-index:120;width:min(340px,calc(100vw - 24px));padding:12px 13px;border:1px solid rgba(55,105,168,.85);border-radius:11px;background:rgba(5,20,39,.98);box-shadow:0 16px 40px rgba(0,0,0,.48);pointer-events:none;color:#b6c9e3;font-size:9px;line-height:1.5}
.info-tooltip b{display:block;color:#edf6ff;font-size:11px;margin-bottom:5px}.info-tooltip strong{color:#6db2ff}.info-tooltip small{display:block;color:#748dac;margin-top:5px}

.geo-events circle.geo-pulse-core{fill:#74c1ff;stroke:#fff;stroke-width:.8;filter:url(#ftGlow)}
.geo-events circle.geo-pulse-ring{fill:none;stroke:#58aaff;stroke-width:1.3;opacity:.7;transform-box:fill-box;transform-origin:center;animation:geoPulse 2.2s ease-out infinite}
@keyframes geoPulse{0%{transform:scale(.3);opacity:.85}70%,100%{transform:scale(4.4);opacity:0}}

.new-data-flash{animation:newDataFlash 2.2s ease both}
@keyframes newDataFlash{0%{box-shadow:0 0 0 rgba(65,151,248,0)}18%{box-shadow:0 0 30px rgba(65,151,248,.26);border-color:rgba(83,160,250,.92)}100%{box-shadow:var(--shadow)}}

.control-room-mode .mainnav{opacity:.18;transition:opacity .25s ease}.control-room-mode .mainnav:hover{opacity:1}
.control-room-mode .footer{display:none}.control-room-mode .experience-deck{margin-bottom:38px}.control-room-mode .topbar{position:sticky;top:0;z-index:80}
.control-room-mode main{padding-top:10px}

@media (max-width:1320px){
  .control-btn.fullscreen-btn{font-size:0;width:36px;padding:0}.control-btn.fullscreen-btn::before{content:"⛶";font-size:15px}
  .control-btn#soundToggleBtn{display:none}
  .top-actions{gap:7px}
  .experience-deck{grid-template-columns:repeat(2,minmax(0,1fr))}
  .daily-brief-card,.favorites-card{grid-column:1 / -1}.activity-card,.moving-card,.watch-card,.timeline-card{grid-column:auto}
}
@media (max-width:900px){
  .experience-deck{grid-template-columns:1fr}.experience-card{grid-column:1!important}
  .summary-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .moving-grid{grid-template-columns:1fr}
  .experience-head{flex-direction:column}.period-tabs{justify-content:flex-start}
  .live-ribbon{grid-template-columns:112px 1fr}.ribbon-label{font-size:8px}
}
@media (max-width:720px){
  .fullscreen-btn{display:none}.since-visit-panel{right:10px;bottom:44px;width:calc(100vw - 20px)}.since-visit-chip{right:10px;bottom:44px}
  .live-ribbon{height:31px}.ribbon-track{animation-duration:35s}.summary-metrics{grid-template-columns:1fr 1fr}
  .public-activity-row{grid-template-columns:42px 7px minmax(0,1fr)}.public-activity-row .activity-source{display:none}
  body{padding-bottom:31px}
}
@media (prefers-reduced-motion:reduce){
  .ribbon-track,.geo-events circle.geo-pulse-ring,.sparkline path,.public-activity-row,.since-visit-panel{animation:none!important}
}
.public-activity-row{text-decoration:none;color:inherit}
.search-group{margin-top:12px;border-top:1px solid rgba(255,255,255,.07);padding-top:9px}
.search-group-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}
.search-group-head b{font-size:10px;letter-spacing:.08em;color:#8fb9ed}.search-group-head span{font-size:8px;color:#708aab}
.search-result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}
.search-favorite{width:28px;height:28px;border-radius:8px;border:1px solid rgba(44,82,130,.62);background:rgba(6,23,44,.72);color:#89a2c2;font-size:14px}
.search-favorite.is-favorite{color:#f4c75e;border-color:rgba(214,173,70,.65)}
.favorite-pill small{color:#6681a6;font-size:7px;border-left:1px solid rgba(255,255,255,.08);padding-left:6px}

.expense-icon svg{width:18px;height:18px;display:block}
.coverage-warning{grid-column:1/-1;margin:8px 0 0;padding:8px 10px;border:1px solid rgba(240,178,70,.35);border-radius:8px;background:rgba(240,178,70,.08);color:#efc46c;font-size:11px;line-height:1.45}

/* =========================================================
   PORTAIL DE DONNÉES PUBLIQUES V0.13 — IDENTITÉ AUTONOME / PRODUIT VIVANT
   ========================================================= */
:root{
  --vp-bg:#03090f;
  --vp-bg-2:#06121d;
  --vp-card:#071722;
  --vp-card-2:#0a1d2a;
  --vp-line:rgba(74,151,188,.22);
  --vp-cyan:#54d9ff;
  --vp-cyan-2:#8feaff;
  --vp-blue:#4d74ff;
  --vp-amber:#f1b65d;
  --vp-green:#66e0a3;
  --vp-violet:#a58bff;
  --vp-text:#ecf9ff;
  --vp-muted:#86a9bc;
  --vp-shadow:0 18px 50px rgba(0,0,0,.34);
}
body.vp-body{background:
  radial-gradient(circle at 18% -10%,rgba(39,128,167,.16),transparent 33%),
  radial-gradient(circle at 86% 8%,rgba(64,81,183,.10),transparent 30%),
  linear-gradient(180deg,#03090f 0%,#02070c 55%,#030a11 100%);color:var(--vp-text);min-height:100vh;padding-bottom:34px}
.vp-shell{display:grid;grid-template-columns:214px minmax(0,1fr);min-height:100vh}
.vp-rail{position:fixed;inset:0 auto 34px 0;width:214px;z-index:82;display:flex;flex-direction:column;background:linear-gradient(180deg,rgba(5,17,26,.985),rgba(3,11,18,.99));border-right:1px solid rgba(67,142,178,.20);box-shadow:18px 0 42px rgba(0,0,0,.18)}
.vp-workspace{grid-column:2;min-width:0}
.vp-brand{height:108px;padding:17px 15px;border-bottom:1px solid rgba(76,153,188,.18);gap:11px}
.vp-mark{width:58px;height:58px;filter:drop-shadow(0 0 13px rgba(67,205,244,.16))}
.vp-mark svg{overflow:visible}
.vp-brand .brand-copy{font-size:9.5px;line-height:1.08;letter-spacing:.065em;color:#f1fbff;min-width:0;max-width:116px;overflow-wrap:normal}
.vp-brand .brand-copy small{display:block;margin-top:6px;color:#5c8fa8;font-size:7.5px;font-weight:600;letter-spacing:.055em;text-transform:none}
.vp-mainnav{display:flex!important;flex-direction:column;align-items:stretch;gap:3px;padding:15px 10px;background:transparent;border:0;overflow:auto}
.vp-mainnav .navitem{display:grid;grid-template-columns:26px 1fr;gap:10px;align-items:center;text-align:left;width:100%;padding:11px 10px;border-radius:9px;color:#8eabbc;font-size:9px;letter-spacing:.055em;font-weight:750;transition:background .18s ease,color .18s ease,transform .18s ease}
.vp-mainnav .navitem:hover{background:rgba(49,135,172,.08);color:#d5effa;transform:translateX(2px)}
.vp-mainnav .navitem.active{color:#c9f5ff;background:linear-gradient(90deg,rgba(49,182,223,.16),rgba(49,182,223,.03));box-shadow:inset 2px 0 0 var(--vp-cyan)}
.vp-mainnav .navitem.active::after{display:none}
.vp-mainnav .navicon{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;opacity:.92}
.vp-mainnav .navitem:first-child .navicon{fill:none}
.vp-rail-bottom{margin-top:auto;padding:12px 10px 15px;border-top:1px solid rgba(64,135,170,.17);display:grid;gap:7px}
.rail-action{display:flex;align-items:center;gap:8px;width:100%;border:1px solid rgba(69,141,179,.22);background:rgba(8,31,43,.62);color:#8fb9ca;border-radius:8px;min-height:34px;padding:0 9px;font-size:8px;font-weight:800;letter-spacing:.06em;text-align:left}
.rail-action:hover{border-color:rgba(87,205,237,.42);color:#d2f5ff}
.wall-mini-dot{width:7px;height:7px;border:1px solid var(--vp-cyan);box-shadow:0 0 8px rgba(84,217,255,.35);transform:rotate(45deg)}
.vp-disclaimer{font-size:6.5px;line-height:1.55;letter-spacing:.08em;color:#4d6d7e;text-align:center;margin-top:5px}
.vp-topbar{position:sticky;top:0;z-index:75;display:grid;grid-template-columns:minmax(320px,1fr) minmax(460px,620px);gap:16px;align-items:center;padding:13px 18px;background:rgba(3,11,18,.88);border-bottom:1px solid rgba(69,145,181,.18);backdrop-filter:blur(16px)}
.vp-masthead{align-items:flex-start;text-align:left;gap:3px}
.masthead-kicker{display:flex;align-items:center;gap:8px;font-size:8px;font-weight:850;letter-spacing:.14em;color:#739fb3}
.signal-live{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--vp-cyan);box-shadow:0 0 11px rgba(84,217,255,.7);animation:vpBreath 2.7s ease-in-out infinite}
.vp-masthead .masthead-title{font-size:18px;line-height:1.1;letter-spacing:.025em;font-weight:760;color:#ecfaff;text-align:left}
.vp-masthead .masthead-title span{color:#79dff7;font-weight:640}
.vp-topbar .top-actions{gap:8px}
.vp-searchbox{max-width:none;min-width:300px;height:38px;border-color:rgba(64,139,174,.28);background:rgba(7,26,37,.84);border-radius:9px}
.vp-searchbox button svg{width:17px;height:17px;stroke:#73bcd7;fill:none;stroke-width:1.7}
.vp-topbar .control-btn{height:38px;padding:0 10px;border:1px solid rgba(67,139,176,.24);border-radius:8px;background:rgba(6,26,38,.66);color:#789eae;font-size:7.5px;font-weight:800;letter-spacing:.055em;white-space:nowrap}
.vp-topbar .control-btn:hover{color:#d2f5ff;border-color:rgba(86,211,244,.43)}
.vp-topbar .follow-btn{color:#e8c86e;border-color:rgba(196,158,71,.30)}
.vp-workspace main{padding:16px 18px 22px}
.vp-hero{display:grid;grid-template-columns:minmax(0,1fr) 520px;gap:24px;align-items:end;padding:28px 28px 23px;margin-bottom:12px;border:1px solid rgba(70,151,187,.18);border-radius:16px;background:
  linear-gradient(112deg,rgba(8,35,47,.83),rgba(5,17,27,.76) 52%,rgba(14,20,44,.70)),
  radial-gradient(circle at 74% 20%,rgba(62,121,244,.14),transparent 35%);box-shadow:var(--vp-shadow);overflow:hidden;position:relative}
.vp-hero::after{content:"";position:absolute;inset:auto -8% -70% 43%;height:170%;border:1px solid rgba(82,215,251,.08);border-radius:50%;transform:rotate(-10deg);pointer-events:none}
.vp-hero .eyebrow{display:flex;align-items:center;gap:8px;font-size:8px;letter-spacing:.14em;color:#77bed3;font-weight:850}
.vp-hero h1{font-size:42px;line-height:.98;letter-spacing:-.035em;margin:12px 0 12px;max-width:720px;font-weight:750;color:#effbff}
.vp-hero h1 span{color:#6edcf3;font-weight:520}
.vp-hero p{max-width:760px;margin:0;color:#85a6b6;font-size:11px;line-height:1.62}
.vp-hero-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.vp-hero-metrics article{padding:13px 12px 12px;border:1px solid rgba(68,149,183,.18);background:rgba(5,25,35,.63);border-radius:11px;min-height:88px}
.vp-hero-metrics span{display:block;font-size:7px;color:#638b9d;letter-spacing:.08em;font-weight:850}
.vp-hero-metrics strong{display:block;font-size:27px;color:#dff8ff;margin:7px 0 2px}
.vp-hero-metrics small{font-size:7px;color:#577589}
.vp-live-lanes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:0 0 12px}
.vp-lane{min-height:132px;border:1px solid rgba(66,145,180,.18);border-radius:12px;background:linear-gradient(180deg,rgba(7,28,39,.80),rgba(5,18,28,.84));padding:11px 12px;box-shadow:0 10px 28px rgba(0,0,0,.18);overflow:hidden;position:relative}
.vp-lane::after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(103,222,249,.55),transparent);opacity:.48}
.vp-lane-head{display:flex;align-items:center;gap:8px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.045)}
.lane-dot{width:7px;height:7px;border-radius:50%;box-shadow:0 0 10px currentColor}.lane-dot.cyan{color:var(--vp-cyan);background:var(--vp-cyan)}.lane-dot.amber{color:var(--vp-amber);background:var(--vp-amber)}.lane-dot.violet{color:var(--vp-violet);background:var(--vp-violet)}.lane-dot.green{color:var(--vp-green);background:var(--vp-green)}
.vp-lane-head b{display:block;font-size:8px;letter-spacing:.08em;color:#cceaf4}.vp-lane-head small{display:block;font-size:7px;color:#587b8b;margin-top:2px}
.vp-lane-body{position:relative;height:82px;overflow:hidden;padding-top:6px}
.vp-lane-item{position:absolute;inset:6px 0 auto;opacity:0;transform:translateY(10px);animation:vpLaneCycle 20s ease-in-out infinite;padding:4px 0}
.vp-lane-item:nth-child(2){animation-delay:5s}.vp-lane-item:nth-child(3){animation-delay:10s}.vp-lane-item:nth-child(4){animation-delay:15s}
.vp-lane-item time{font-size:7px;color:#5e8a9d;margin-right:6px}.vp-lane-item b{display:block;font-size:10px;line-height:1.32;color:#dceff6;margin:3px 0}.vp-lane-item small{display:block;font-size:7.5px;line-height:1.38;color:#668697;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lane-empty{display:block;padding:19px 4px;color:#59798a;font-size:8px;line-height:1.45}
.vp-mosaic{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(290px,.72fr) minmax(290px,.72fr);gap:10px;align-items:stretch}
.vp-mosaic>.vp-map-card{grid-row:span 2;min-height:560px}.vp-monitor-card{min-height:270px}
.vp-map-card{background:linear-gradient(180deg,rgba(5,23,34,.92),rgba(4,15,23,.94));border-color:rgba(61,153,191,.23);position:relative}
.vp-map-card::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 42% 45%,rgba(52,160,194,.08),transparent 35%)}
.vp-map-stage{grid-template-columns:minmax(0,1fr) 205px;min-height:402px}
.vp-map-side{display:grid;align-content:center;gap:8px}
.vp-kpi{padding:12px;border-radius:10px;background:rgba(6,28,39,.74);border:1px solid rgba(65,151,184,.20)}
.vp-kpi span{display:block;font-size:7px;letter-spacing:.07em;color:#678c9d}.vp-kpi strong{display:block;color:#dcf7ff;font-size:17px;margin:5px 0 2px}.vp-kpi small{font-size:7px;color:#5d7f90}
.vp-map-stats{margin-top:6px}.vp-map-stats strong{font-size:22px}.vp-map-stats span{font-size:8px;color:#6a8b9b}
.vp-monitor-card .experience-head h2{font-size:12px}.vp-monitor-card .public-activity-feed{max-height:213px;overflow:hidden}.vp-monitor-card .small-feed{max-height:205px;overflow:hidden}
.vp-experience-deck{margin-top:10px;grid-template-columns:1.2fr 1fr}.vp-expense-absence-card{margin-top:10px;margin-bottom:22px}
.vp-compact-expenses{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 14px}.vp-compact-expenses .expense-row{grid-template-columns:34px 30px minmax(0,1fr) auto}
.vp-content-page{max-width:1500px;margin:0 auto}.vp-page-title{margin:4px 0 13px;padding:20px 22px;border:1px solid rgba(66,145,180,.17);border-radius:14px;background:linear-gradient(110deg,rgba(7,31,43,.69),rgba(5,18,28,.35))}.vp-page-title span{color:#5fd5ed}.vp-page-title h1{font-size:30px;margin:5px 0 8px;letter-spacing:-.02em}.vp-page-title p{max-width:1000px;color:#7e9eae;line-height:1.6}
.section-refresh-banner{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:11px;align-items:center;padding:10px 12px;margin:0 0 10px;border:1px solid rgba(65,151,184,.19);border-radius:10px;background:rgba(6,27,38,.67)}
.section-refresh-dot{width:8px;height:8px;border-radius:50%;background:#63dba1;box-shadow:0 0 9px rgba(99,219,161,.28)}.section-refresh-banner.is-refreshing .section-refresh-dot{background:var(--vp-cyan);animation:vpBreath 1.1s ease-in-out infinite}.section-refresh-banner.is-partial .section-refresh-dot{background:var(--vp-amber)}.section-refresh-banner.is-error .section-refresh-dot{background:#ed727a}.section-refresh-banner b{display:block;font-size:9px;color:#cce8f1;letter-spacing:.04em}.section-refresh-banner small{display:block;font-size:8px;color:#648392;margin-top:2px}.section-refresh-banner em{font-style:normal;font-size:7px;color:#6c98aa;font-weight:850;letter-spacing:.07em}
.vp-official-search-card{margin-bottom:10px}.vp-official-search-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,560px);align-items:end;gap:18px}.vp-official-search-head h2{font-size:17px;margin:3px 0}.official-searchbox{display:grid;grid-template-columns:minmax(0,1fr) 110px;border:1px solid rgba(74,154,189,.25);border-radius:9px;overflow:hidden;background:rgba(3,17,25,.62)}.official-searchbox input{height:42px;border:0;background:transparent;color:#e8faff;padding:0 12px;outline:0}.official-searchbox button{border:0;border-left:1px solid rgba(70,148,183,.19);background:rgba(47,154,190,.09);color:#76cee2;font-size:8px;font-weight:850;letter-spacing:.06em}.vp-official-results{margin-top:12px;display:grid;gap:6px}.vp-official-result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:9px 10px;border:1px solid rgba(65,142,175,.16);border-radius:8px;background:rgba(6,25,36,.54)}.vp-official-result b{display:block;font-size:10px;color:#dceff6}.vp-official-result small{display:block;color:#658596;font-size:8px;margin-top:3px}.vp-official-result a{font-size:8px;color:#63cbea;text-decoration:none;white-space:nowrap}
.vp-official-types{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:10px}.vp-official-types article{min-height:98px;padding:12px;border:1px solid rgba(69,147,181,.17);border-radius:10px;background:linear-gradient(180deg,rgba(7,29,40,.72),rgba(5,19,29,.74));cursor:pointer;transition:transform .18s ease,border-color .18s ease}.vp-official-types article:hover{transform:translateY(-2px);border-color:rgba(83,206,236,.38)}.vp-official-types span{display:block;font-size:7px;letter-spacing:.07em;color:#6b91a2;font-weight:850}.vp-official-types strong{display:block;font-size:25px;color:#dff8ff;margin:9px 0 2px}.vp-official-types small{font-size:7px;color:#587788}
.vp-official-map-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:10px;margin-bottom:10px}.vp-territory-map-card{min-height:480px}.officials-map{width:100%;height:390px;display:block}.officials-fr-shape{fill:#071e2a;stroke:rgba(78,195,224,.25);stroke-width:2}.officials-point{cursor:pointer}.officials-point circle{fill:#4bc8e7;opacity:.52;transition:r .18s ease,opacity .18s ease;filter:drop-shadow(0 0 4px rgba(70,204,238,.42))}.officials-point:hover circle{opacity:1}.officials-point text{fill:#bdebf5;font-size:7px;font-weight:800;pointer-events:none;text-anchor:middle}.vp-territory-details{display:grid;gap:7px}.vp-territory-stat{padding:10px;border:1px solid rgba(67,145,179,.17);border-radius:8px;background:rgba(6,25,36,.55)}.vp-territory-stat b{font-size:10px;color:#dbeff5}.vp-territory-stat small{display:block;font-size:8px;color:#658697;margin-top:3px}.vp-freshness-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.vp-freshness-item{padding:10px;border:1px solid rgba(64,142,176,.16);border-radius:8px;background:rgba(6,25,36,.52)}.vp-freshness-item b{display:block;font-size:9px;color:#cae3ec}.vp-freshness-item span{display:block;font-size:8px;color:#658597;margin-top:3px}
.vp-expense-categories{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;margin-bottom:10px}.vp-expense-categories article{padding:11px 10px;border:1px solid rgba(74,150,181,.18);border-radius:9px;background:rgba(6,25,36,.58);min-height:94px}.vp-expense-categories span{display:block;font-size:8px;color:#cbe8f2;font-weight:850}.vp-expense-categories b{display:block;font-size:7px;color:#e0b465;line-height:1.4;margin:9px 0 3px}.vp-expense-categories small{font-size:7px;color:#5e7d8d}.vp-manifesto-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.vp-manifesto{min-height:310px;padding:18px}.vp-manifesto h2{font-size:18px;line-height:1.22;margin:9px 0 12px;color:#e7f7fc}.vp-manifesto p{font-size:10px;line-height:1.7;color:#7899a9}
.vp-just-published-card{margin-bottom:10px}.vp-doc-live-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.vp-doc-live-card{min-height:132px;padding:12px;border:1px solid rgba(67,148,181,.17);border-radius:9px;background:rgba(6,26,37,.57);animation:activityReveal .34s ease both}.vp-doc-live-card time{font-size:7px;color:#598092}.vp-doc-live-card span{display:block;font-size:7px;color:#66cce5;font-weight:850;letter-spacing:.055em;margin:5px 0}.vp-doc-live-card b{display:block;font-size:11px;color:#dceff5;line-height:1.38}.vp-doc-live-card small{display:block;font-size:7.5px;color:#678898;line-height:1.45;margin-top:6px}.vp-doc-live-card a{display:inline-block;margin-top:9px;font-size:8px;color:#6ad6ee;text-decoration:none}.vp-doc-categories{display:flex;gap:5px;flex-wrap:wrap;margin:10px 0}.vp-doc-categories button{border:1px solid rgba(68,146,179,.17);background:rgba(5,24,34,.60);color:#688d9d;border-radius:999px;padding:6px 9px;font-size:7px;font-weight:850}.vp-doc-categories button.active{color:#caf5ff;border-color:rgba(84,213,242,.42);background:rgba(48,163,198,.12)}
.vp-live-page-grid{align-items:start}.vp-live-page-channels{display:grid;gap:7px}.vp-channel-summary{padding:10px;border:1px solid rgba(66,145,178,.17);border-radius:8px;background:rgba(6,25,36,.54)}.vp-channel-summary b{display:block;font-size:9px;color:#cce8ef}.vp-channel-summary span{display:block;font-size:8px;color:#638493;margin-top:3px}
.vp-wall{position:fixed;z-index:150;inset:0;background:radial-gradient(circle at 50% 0,rgba(26,94,119,.18),transparent 32%),rgba(2,8,13,.985);padding:26px;overflow:auto}.vp-wall-head{display:flex;align-items:flex-end;justify-content:space-between;margin:0 auto 18px;max-width:1600px}.vp-wall-head h2{font-size:34px;margin:5px 0 0;letter-spacing:.02em}.vp-wall-head button{height:38px;padding:0 14px;border:1px solid rgba(79,169,204,.28);border-radius:8px;background:rgba(6,27,38,.64);color:#8bc5d7;font-size:8px;font-weight:850}.vp-wall-grid{max-width:1600px;margin:0 auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.vp-wall-event{min-height:150px;padding:15px;border-radius:12px;border:1px solid rgba(66,147,181,.18);background:linear-gradient(180deg,rgba(7,30,42,.74),rgba(4,19,28,.78));box-shadow:0 16px 38px rgba(0,0,0,.24);animation:activityReveal .38s ease both}.vp-wall-event time{font-size:8px;color:#5f8597}.vp-wall-event span{display:block;color:#61d0e8;font-size:8px;font-weight:850;letter-spacing:.06em;margin:8px 0}.vp-wall-event b{display:block;font-size:14px;line-height:1.35;color:#e2f5fa}.vp-wall-event small{display:block;font-size:8px;color:#668796;line-height:1.5;margin-top:8px}
.vp-footer{margin-left:0;padding:16px 18px 48px;background:transparent;border-top:1px solid rgba(66,144,177,.14);color:#557585}
.live-ribbon{left:214px;background:rgba(3,13,20,.975);border-top-color:rgba(57,146,180,.31)}.ribbon-label{background:linear-gradient(90deg,rgba(27,118,147,.28),rgba(4,25,35,.7));color:#9be5f6}.ribbon-dot{background:var(--vp-cyan)}
.sync-status-panel{left:225px;right:auto;top:76px;bottom:auto;max-height:calc(100vh - 120px);overflow:auto;border-color:rgba(68,154,188,.34);background:rgba(4,18,27,.98)}
.vp-sync-card{border-color:rgba(76,185,217,.35);background:linear-gradient(180deg,rgba(5,25,35,.98),rgba(3,14,22,.99))}.vp-sync-card .sync-brand{color:#8ce8fa}
.search-results-panel{left:232px;right:18px;top:78px;width:auto;max-width:none;background:rgba(4,18,27,.985);border-color:rgba(70,154,188,.35)}
.modal-icon{background:linear-gradient(145deg,#126d8c,#313a8c)}

@keyframes vpBreath{0%,100%{opacity:.55;box-shadow:0 0 5px rgba(84,217,255,.3)}50%{opacity:1;box-shadow:0 0 15px rgba(84,217,255,.75)}}
@keyframes vpLaneCycle{0%{opacity:0;transform:translateY(10px)}5%,22%{opacity:1;transform:translateY(0)}25%,100%{opacity:0;transform:translateY(-9px)}}

@media (max-width:1280px){
  .vp-shell{grid-template-columns:174px minmax(0,1fr)}.vp-rail{width:174px}.vp-brand{padding:13px 10px}.vp-mark{width:46px;height:46px}.vp-mainnav .navitem{grid-template-columns:22px 1fr;padding:10px 7px}.vp-mainnav .navitem span{font-size:7px}.vp-workspace{grid-column:2}.live-ribbon{left:174px}.sync-status-panel{left:184px}.search-results-panel{left:192px}.vp-topbar{grid-template-columns:1fr 520px}.vp-hero{grid-template-columns:1fr 420px}.vp-live-lanes{grid-template-columns:repeat(2,1fr)}.vp-mosaic{grid-template-columns:minmax(0,1.4fr) minmax(260px,.6fr)}.vp-mosaic>.vp-map-card{grid-column:1;grid-row:span 3}.vp-monitor-card{grid-column:2}.vp-expense-categories{grid-template-columns:repeat(4,1fr)}
}
@media (max-width:980px){
  body.vp-body{padding-bottom:34px}.vp-shell{display:block}.vp-rail{position:sticky;top:0;bottom:auto;width:100%;height:auto;display:block;z-index:90;border-right:0;border-bottom:1px solid rgba(67,142,178,.2)}.vp-brand{height:66px;display:flex;padding:8px 12px}.vp-mark{width:44px;height:44px}.vp-mainnav{display:flex!important;flex-direction:row;overflow-x:auto;padding:5px 8px}.vp-mainnav .navitem{display:flex;width:auto;min-width:max-content;padding:8px 9px}.vp-mainnav .navitem span{font-size:7px}.vp-rail-bottom{display:none}.vp-workspace{min-width:0}.vp-topbar{position:static;grid-template-columns:1fr;padding:10px 12px}.vp-masthead{display:none}.vp-topbar .top-actions{justify-content:stretch}.vp-searchbox{min-width:0;flex:1}.vp-topbar .control-btn{display:none}.vp-workspace main{padding:10px}.vp-hero{grid-template-columns:1fr;padding:19px}.vp-hero h1{font-size:34px}.vp-hero-metrics{grid-template-columns:repeat(3,1fr)}.vp-live-lanes{grid-template-columns:repeat(2,1fr)}.vp-mosaic{grid-template-columns:1fr}.vp-mosaic>.vp-map-card,.vp-monitor-card{grid-column:auto;grid-row:auto}.vp-map-stage{grid-template-columns:1fr}.vp-map-side{grid-template-columns:repeat(2,1fr)}.vp-compact-expenses{grid-template-columns:1fr}.vp-experience-deck{grid-template-columns:1fr}.vp-official-types{grid-template-columns:repeat(2,1fr)}.vp-official-map-grid{grid-template-columns:1fr}.vp-official-search-head{grid-template-columns:1fr}.vp-expense-categories{grid-template-columns:repeat(2,1fr)}.vp-manifesto-grid{grid-template-columns:1fr}.vp-doc-live-grid{grid-template-columns:1fr}.vp-freshness-grid{grid-template-columns:repeat(2,1fr)}.vp-wall-grid{grid-template-columns:repeat(2,1fr)}.live-ribbon{left:0}.sync-status-panel{left:10px;right:10px;top:145px;width:auto}.search-results-panel{left:10px;right:10px;top:145px}.since-visit-panel{right:10px;bottom:43px}
}
@media (max-width:620px){
  .vp-brand .brand-copy{font-size:9px;max-width:none}.vp-mainnav .navicon{width:15px;height:15px}.vp-mainnav .navitem{padding:7px 8px}.vp-hero{padding:15px}.vp-hero h1{font-size:28px}.vp-hero p{font-size:10px}.vp-hero-metrics{grid-template-columns:1fr}.vp-hero-metrics article{min-height:66px}.vp-live-lanes{grid-template-columns:1fr}.vp-map-side{grid-template-columns:1fr}.vp-official-types{grid-template-columns:1fr 1fr}.vp-expense-categories{grid-template-columns:1fr}.vp-freshness-grid{grid-template-columns:1fr}.vp-wall{padding:14px}.vp-wall-grid{grid-template-columns:1fr}.vp-page-title h1{font-size:24px}.official-searchbox{grid-template-columns:1fr}.official-searchbox button{border-left:0;border-top:1px solid rgba(70,148,183,.19);height:36px}.vp-topbar .top-actions{gap:5px}.vp-searchbox{width:100%}.vp-topbar .follow-btn{display:none}
}
@media (prefers-reduced-motion:reduce){.vp-lane-item,.signal-live{animation:none!important}.vp-lane-item{position:relative;opacity:1;transform:none;display:none}.vp-lane-item:first-child{display:block}}
/* V0.14.4 — correctif ciblé avant RC */
.vp-lane-body{position:relative;min-height:78px;overflow:hidden}.vp-lane-item{position:absolute;inset:0;opacity:0;transform:translateY(7px);pointer-events:none;transition:opacity .55s ease,transform .55s ease;animation:none!important}.vp-lane-item.is-active{opacity:1;transform:translateY(0);pointer-events:auto}.parliament-coverage{display:flex;flex-wrap:wrap;gap:4px;padding:0 0 7px}.parliament-cap{font-size:6px;font-weight:900;letter-spacing:.035em;border:1px solid rgba(85,145,180,.2);border-radius:999px;padding:3px 5px;background:rgba(5,25,37,.55);color:#6f8e9f}.parliament-cap.is-on{color:#70dcb7;border-color:rgba(74,201,158,.34)}.parliament-cap.is-pending{color:#9b8ba7}
.officials-overseas-label{fill:#658696;font-size:7px;font-weight:900;letter-spacing:.08em}.officials-point.is-overseas circle{fill:#5ee0d0}.officials-overseas-legend{margin:0 12px 10px}
.vp-expense-directory-card{margin-bottom:10px}.vp-expense-searchbox{max-width:720px;margin:10px 0}.vp-expense-directory-results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.vp-expense-person{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(210px,.8fr);gap:10px;padding:11px;border:1px solid rgba(69,149,182,.18);border-radius:9px;background:rgba(5,25,36,.55)}.vp-expense-person span{font-size:7px;color:#69c9df;font-weight:900}.vp-expense-person b{display:block;color:#dff3f7;font-size:11px;margin:4px 0}.vp-expense-person small{display:block;color:#6d8d9c;font-size:7.5px;line-height:1.45}.vp-expense-person-status{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.vp-expense-person-status strong{font-size:7px;line-height:1.4}.vp-expense-person-status strong.is-unavailable{color:#e2b76b}.vp-expense-person-status strong.is-available{color:#68d49c}.vp-expense-person-status a{font-size:7px;color:#64d1e8;text-decoration:none}
.section-refresh-banner.is-complete b{color:#75dfb0}
@media(max-width:980px){.vp-expense-directory-results{grid-template-columns:1fr}.vp-expense-person{grid-template-columns:1fr}}


/* ========================================================================
   V0.14.5 — HOTFIX VISUEL GRAND PUBLIC + LUMINOSITÉ + MOUVEMENT
   Objectif : lisible sans zoom à ~1200 px, navigation explicite, densité utile,
   animations visibles sans falsifier de données et respect prefers-reduced-motion.
   ======================================================================== */
:root{
  --vp-bg:#081827;
  --vp-bg-2:#0b2133;
  --vp-card:#0f2a40;
  --vp-card-2:#12334d;
  --vp-card-3:#173b57;
  --vp-line:rgba(119,205,235,.28);
  --vp-line-strong:rgba(120,221,250,.48);
  --vp-text:#f5fbff;
  --vp-muted:#bad0dc;
  --vp-muted-2:#91b0c1;
  --vp-cyan:#63dcf4;
  --vp-cyan-2:#a8f3ff;
  --vp-blue:#7398ff;
  --vp-amber:#ffc96d;
  --vp-green:#75e4ad;
  --vp-violet:#bca8ff;
  --vp-shadow:0 18px 48px rgba(0,8,18,.27);
}
html{font-size:16px}
body.vp-body{font-size:16px;line-height:1.55;padding-top:34px;background:
  radial-gradient(circle at 12% 5%,rgba(55,169,205,.22),transparent 32%),
  radial-gradient(circle at 88% 4%,rgba(103,121,244,.16),transparent 29%),
  radial-gradient(circle at 50% 90%,rgba(25,129,171,.12),transparent 36%),
  linear-gradient(180deg,#0a1d2c 0%,#071522 52%,#091c2b 100%);color:var(--vp-text)}
body.vp-body::before,body.vp-body::after{content:"";position:fixed;z-index:-1;width:42vw;height:42vw;border-radius:50%;filter:blur(80px);opacity:.16;pointer-events:none;animation:vpAmbientFloat 18s ease-in-out infinite alternate}
body.vp-body::before{left:-18vw;top:16vh;background:#36b8d8}
body.vp-body::after{right:-18vw;top:45vh;background:#536dff;animation-delay:-7s}
@keyframes vpAmbientFloat{to{transform:translate3d(8vw,-5vh,0) scale(1.08)}}

.vp-demo-banner{position:fixed;z-index:220;inset:0 0 auto;height:34px;display:flex;align-items:center;justify-content:center;gap:12px;padding:0 16px;background:linear-gradient(90deg,#9d1731,#bf2b46 52%,#8e1830);color:#fff7f9;border-bottom:1px solid rgba(255,255,255,.28);box-shadow:0 6px 18px rgba(65,0,15,.22);font-size:12px;letter-spacing:.025em;text-align:center}
.vp-demo-banner strong{font-size:12px;letter-spacing:.08em}.vp-demo-banner span{opacity:.95}

.vp-shell{grid-template-columns:258px minmax(0,1fr)}
.vp-rail{top:34px;bottom:34px;width:258px;background:linear-gradient(180deg,rgba(13,39,56,.985),rgba(8,27,41,.99));border-right:1px solid var(--vp-line);box-shadow:18px 0 44px rgba(0,9,18,.22)}
.vp-workspace{grid-column:2}
.vp-brand{height:126px;padding:18px 16px;gap:13px;border-bottom-color:var(--vp-line)}
.vp-mark{width:64px;height:64px;filter:drop-shadow(0 0 18px rgba(95,222,249,.35))}
.vp-brand .brand-copy{font-size:13px;line-height:1.12;letter-spacing:.045em;max-width:145px;color:#fff}
.vp-brand .brand-copy small{font-size:12px;margin-top:7px;color:#98c9da;letter-spacing:.02em}
.vp-mainnav{gap:6px;padding:16px 11px}
.vp-mainnav .navitem{grid-template-columns:28px minmax(0,1fr);gap:11px;min-height:58px;padding:9px 11px;border:1px solid transparent;border-radius:12px;color:#c0d8e4;font-size:14px;letter-spacing:.02em}
.vp-mainnav .navitem>span{display:block!important;font-size:inherit!important;opacity:1!important;min-width:0}
.vp-mainnav .navitem>span>b{display:block;font-size:14px;line-height:1.25;letter-spacing:.035em;color:inherit}
.vp-mainnav .navitem>span>small{display:block!important;margin-top:3px;font-size:13px!important;line-height:1.2;color:#86aebf!important;font-weight:500;letter-spacing:0;text-transform:none}
.vp-mainnav .navicon{width:21px;height:21px;stroke-width:1.8}
.vp-mainnav .navitem:hover{background:rgba(83,193,226,.13);border-color:rgba(100,214,243,.24);color:#f0fbff;transform:translateX(3px);box-shadow:0 8px 22px rgba(3,17,29,.18)}
.vp-mainnav .navitem.active{color:#f4fdff;background:linear-gradient(90deg,rgba(56,199,231,.23),rgba(49,129,176,.09));border-color:rgba(98,222,247,.24);box-shadow:inset 3px 0 0 var(--vp-cyan),0 0 22px rgba(62,207,238,.08)}
.vp-mainnav .navitem.active>span>small{color:#b4dce8!important}
.vp-rail-bottom{padding:14px 11px 16px;gap:9px;border-top-color:var(--vp-line)}
.rail-action{min-height:42px;padding:0 11px;font-size:12px;border-color:var(--vp-line);background:rgba(16,52,72,.7);color:#c5e3ec}
.vp-disclaimer{font-size:11px;line-height:1.5;color:#8fb2c0;letter-spacing:.035em}

.vp-topbar{top:34px;grid-template-columns:minmax(350px,1fr) minmax(520px,700px);padding:14px 20px;background:rgba(8,26,39,.88);border-bottom-color:var(--vp-line);box-shadow:0 8px 26px rgba(0,8,16,.15)}
.masthead-kicker{font-size:12px;color:#a5cad8;letter-spacing:.085em}
.vp-masthead .masthead-title{font-size:21px;letter-spacing:.018em}.vp-masthead .masthead-title span{color:#8feaff}
.vp-searchbox{height:44px;border-color:rgba(111,205,232,.36);background:rgba(15,48,68,.88);box-shadow:inset 0 0 0 1px rgba(255,255,255,.025),0 7px 18px rgba(0,9,18,.11)}
.vp-searchbox input{font-size:14px;color:#fff}.vp-searchbox input::placeholder{color:#a4c1cf}
.vp-topbar .control-btn{height:44px;padding:0 13px;font-size:12px;border-color:rgba(109,196,224,.31);background:rgba(15,49,69,.78);color:#c5dde6}
.vp-topbar .control-btn:hover{background:rgba(26,70,94,.88);color:#fff;border-color:rgba(116,224,251,.58)}
.vp-workspace main{padding:20px 22px 28px}

.card,.vp-lane,.vp-engine-strip,.vp-hero,.vp-official-types article,.vp-expense-categories article{border-color:var(--vp-line)!important;box-shadow:var(--vp-shadow)}
.card{background:linear-gradient(180deg,rgba(17,48,71,.96),rgba(11,34,53,.97))}
.card,.vp-lane,.vp-kpi,.vp-hero-metrics article,.summary-metrics>div,.trend-card,.watch-row,.vp-doc-live-card,.vp-expense-person,.vp-official-types article,.vp-expense-categories article{transition:transform .24s ease,border-color .24s ease,background .24s ease,box-shadow .24s ease}
.card:hover,.vp-lane:hover,.vp-kpi:hover,.vp-hero-metrics article:hover,.summary-metrics>div:hover,.trend-card:hover,.vp-doc-live-card:hover,.vp-expense-person:hover,.vp-official-types article:hover,.vp-expense-categories article:hover{transform:translateY(-2px);border-color:var(--vp-line-strong)!important;box-shadow:0 20px 44px rgba(0,8,18,.28),0 0 26px rgba(67,199,231,.08)}

.vp-hero{--mx:75%;--my:25%;grid-template-columns:minmax(0,1fr) minmax(520px,620px);padding:32px 32px 27px;margin-bottom:14px;border-color:rgba(114,219,245,.34)!important;background:
  radial-gradient(circle at var(--mx) var(--my),rgba(89,208,240,.18),transparent 28%),
  linear-gradient(112deg,rgba(19,65,85,.92),rgba(12,40,60,.88) 54%,rgba(24,42,82,.83));overflow:hidden}
.vp-hero::before{content:"";position:absolute;z-index:0;top:-40%;left:-28%;width:28%;height:180%;background:linear-gradient(90deg,transparent,rgba(162,244,255,.16),transparent);transform:rotate(14deg);animation:vpHeroScan 7.5s ease-in-out infinite;pointer-events:none}
.vp-hero>*{position:relative;z-index:1}
@keyframes vpHeroScan{0%,16%{left:-32%;opacity:0}26%{opacity:1}58%{left:116%;opacity:.65}72%,100%{left:116%;opacity:0}}
.vp-hero .eyebrow{font-size:12px;color:#a8e8f5;letter-spacing:.09em}
.vp-hero h1{font-size:46px;line-height:1.02;margin:12px 0 14px;text-shadow:0 5px 20px rgba(0,0,0,.18)}
.vp-hero h1 span{color:#9ceeff}
.vp-hero p{font-size:15px!important;line-height:1.65;color:#c4d9e3;max-width:820px}
.vp-hero-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.vp-hero-metrics article{min-height:108px;padding:15px 14px;border-color:rgba(113,206,231,.27);background:linear-gradient(180deg,rgba(20,63,83,.78),rgba(12,43,63,.78))}
.vp-hero-metrics span{font-size:12px;line-height:1.35;color:#a9cbd8;letter-spacing:.055em}
.vp-hero-metrics strong{font-size:28px;color:#fff;margin:8px 0 4px;white-space:nowrap}.vp-hero-metrics .engine-metric strong{font-size:20px;color:#99edff}
.vp-hero-metrics small{font-size:12px!important;color:#9ebdca!important;line-height:1.35}

.vp-engine-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0 0 14px;border:1px solid var(--vp-line);border-radius:13px;background:linear-gradient(90deg,rgba(13,49,69,.92),rgba(16,54,75,.94),rgba(13,45,66,.92));overflow:hidden;box-shadow:0 12px 30px rgba(0,9,18,.16)}
.vp-engine-item{display:grid;grid-template-columns:14px minmax(0,1fr);gap:10px;align-items:center;padding:12px 14px;min-height:64px;border-right:1px solid rgba(130,214,235,.15)}.vp-engine-item:last-child{border-right:0}
.vp-engine-item b{display:block;font-size:12px;letter-spacing:.045em;color:#eefbff}.vp-engine-item small{display:block!important;margin-top:3px;font-size:12px!important;line-height:1.35;color:#a7c5d2!important}
.engine-led{width:10px;height:10px;border-radius:50%;background:#7da0b4;box-shadow:0 0 0 4px rgba(125,160,180,.10)}
.engine-led.is-live{background:#64e1ad;box-shadow:0 0 0 4px rgba(100,225,173,.12),0 0 14px rgba(100,225,173,.45);animation:vpLedPulse 2.4s ease-in-out infinite}
.engine-led.is-warn{background:#ffc96d;box-shadow:0 0 0 4px rgba(255,201,109,.12),0 0 14px rgba(255,201,109,.32)}
.engine-led.is-error{background:#ff7181;box-shadow:0 0 0 4px rgba(255,113,129,.12)}
.engine-led.is-checking{background:#6edcf3;box-shadow:0 0 0 4px rgba(110,220,243,.11);animation:vpLedPulse 1.2s ease-in-out infinite}
@keyframes vpLedPulse{50%{transform:scale(1.28);filter:brightness(1.18)}}

.vp-live-lanes{gap:12px;margin-bottom:14px}
.vp-lane{min-height:174px;padding:14px 15px;background:linear-gradient(180deg,rgba(18,56,74,.92),rgba(11,37,56,.92));border-radius:14px;position:relative}
.vp-lane::before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(110deg,transparent 10%,rgba(120,232,253,.07) 42%,transparent 74%);background-size:240% 100%;animation:vpLaneGlow 8s linear infinite;pointer-events:none}
@keyframes vpLaneGlow{to{background-position:-240% 0}}
.vp-lane-head{padding-bottom:11px;border-bottom-color:rgba(255,255,255,.09)}
.lane-dot{width:10px;height:10px;animation:vpLedPulse 2.2s ease-in-out infinite}
.vp-lane-head b{font-size:12px;color:#f2fbff;letter-spacing:.055em}.vp-lane-head small{font-size:12px!important;color:#9cbac6!important;margin-top:3px}
.vp-lane-body{height:116px!important;min-height:116px!important;padding-top:9px}.vp-lane-item{inset:9px 0 0!important}
.vp-lane-item time{font-size:12px;color:#9bc0ce}.vp-lane-item b{font-size:15px;line-height:1.38;color:#fff;margin:5px 0}.vp-lane-item small{font-size:12px!important;line-height:1.45;color:#a9c2ce!important;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.lane-empty,.activity-empty,.trend-placeholder,.sync-log-empty{position:relative;overflow:hidden;font-size:13px!important;line-height:1.55;color:#b7cdd7!important;border-color:rgba(122,203,228,.25);background:rgba(10,38,57,.58);padding:18px 14px}
.lane-empty::after,.activity-empty::after,.trend-placeholder::after{content:"";position:absolute;left:-35%;bottom:0;width:35%;height:2px;background:linear-gradient(90deg,transparent,#71def4,transparent);animation:vpEmptyScan 3.3s ease-in-out infinite}
@keyframes vpEmptyScan{to{left:115%}}

.vp-mosaic{gap:12px}.vp-mosaic>.vp-map-card{min-height:500px}.vp-monitor-card{min-height:205px}
.vp-map-card{background:linear-gradient(180deg,rgba(15,51,69,.96),rgba(10,34,51,.96));border-color:rgba(108,213,240,.31)!important}
.vp-map-card::before{background:radial-gradient(circle at 42% 45%,rgba(67,207,239,.16),transparent 40%)}
.network-lines line{stroke:#6edcf3!important;stroke-opacity:.34!important;stroke-width:1.35!important;animation-duration:6.5s!important}.network-nodes circle{fill:#f6fdff!important;filter:drop-shadow(0 0 5px rgba(126,235,255,.72));animation-duration:2.8s!important}
.vp-kpi{padding:14px;border-color:rgba(110,205,232,.27);background:rgba(18,59,78,.82)}
.vp-kpi span{font-size:12px;color:#b1ccd7;letter-spacing:.045em}.vp-kpi strong{font-size:22px;color:#fff}.vp-kpi small{font-size:12px!important;color:#9ebdca!important}
.vp-map-stats strong{font-size:28px}.vp-map-stats span{font-size:12px;color:#a8c3cf}
.experience-head h2,.vp-monitor-card .experience-head h2{font-size:17px;color:#fff}.eyebrow{font-size:12px;color:#91dcf0}.live-meaning,.local-only{font-size:12px;color:#a7c3d0;max-width:280px}
.public-activity-row{grid-template-columns:62px 10px minmax(0,1fr) auto;gap:10px;padding:12px 3px}.public-activity-row time{font-size:12px;color:#a2c0ce}.public-activity-row b{font-size:14px;color:#fff}.public-activity-row small{font-size:12px!important;color:#a9c2ce!important}.activity-source{font-size:12px;color:#9ee9fb;padding:4px 7px}
.feed-item b{font-size:14px}.feed-item span{font-size:12px!important;color:#afc8d4!important}.feed-item strong{font-size:14px}
.watch-row b{font-size:14px}.watch-row small,.watch-row time{font-size:12px!important;color:#a6c0cc!important}
.summary-metrics strong{font-size:28px}.summary-metrics span{font-size:12px;color:#a7c1cd}.scope-note.compact,.scope-note{font-size:12px!important;color:#a3becb!important}
.trend-card{min-height:125px;background:rgba(17,53,76,.76);border-color:rgba(111,201,228,.22)}.trend-card .trend-head span,.trend-card em{font-size:12px}.trend-card strong{font-size:22px}
.timeline-event{flex-basis:155px}.timeline-event b{font-size:12px;max-height:46px}.timeline-event small,.timeline-event time{font-size:12px!important;color:#9bb5c2!important}.favorite-pill{font-size:12px;min-height:38px}

.vp-page-title{padding:24px 25px;background:linear-gradient(110deg,rgba(17,58,78,.9),rgba(11,37,56,.72));border-color:var(--vp-line)!important}.vp-page-title>span{font-size:12px;font-weight:800;letter-spacing:.08em}.vp-page-title h1{font-size:34px;color:#fff}.vp-page-title p{font-size:15px!important;color:#bfd4de!important}
.section-refresh-banner{padding:13px 15px;border-color:var(--vp-line)!important;background:rgba(15,52,72,.82)}.section-refresh-banner b{font-size:13px;color:#fff}.section-refresh-banner small{font-size:12px!important;color:#abc6d2!important}.section-refresh-banner em{font-size:12px}
.period-tab,.mini-action,.filter-chip,.vp-doc-categories button{font-size:12px!important;min-height:34px;padding:0 11px;color:#bdd1dc;border-color:rgba(118,205,230,.26);background:rgba(14,48,69,.72)}
.control-btn,.rail-action,button{letter-spacing:.02em}

.vp-official-types article,.vp-expense-categories article{padding:15px 13px;min-height:112px;background:rgba(17,55,75,.8)}
.vp-official-types span,.vp-expense-categories span{font-size:12px!important;color:#e4f6fb!important}.vp-official-types strong{font-size:25px!important;color:#fff!important}.vp-official-types small,.vp-expense-categories small{font-size:12px!important;color:#a9c3cf!important}.vp-expense-categories b{font-size:12px!important;color:#ffd27b!important}
.vp-manifesto p{font-size:14px!important;color:#b8d0da!important}.vp-manifesto h2{font-size:21px}
.vp-doc-live-card{min-height:158px;padding:15px;background:rgba(16,53,74,.82)}.vp-doc-live-card time,.vp-doc-live-card span,.vp-doc-live-card small,.vp-doc-live-card a{font-size:12px!important}.vp-doc-live-card b{font-size:15px;color:#fff}.vp-doc-live-card small{color:#abc5d0!important}
.vp-expense-person{padding:15px;background:rgba(16,53,73,.82)}.vp-expense-person span,.vp-expense-person small,.vp-expense-person-status strong,.vp-expense-person-status a{font-size:12px!important}.vp-expense-person b{font-size:16px;color:#fff}
.vp-channel-summary b{font-size:13px}.vp-channel-summary span{font-size:12px!important}.parliament-cap{font-size:12px!important;padding:5px 7px}.officials-overseas-label,.officials-point text{font-size:11px!important}
.vp-freshness-item b{font-size:13px}.vp-freshness-item span{font-size:12px!important}.vp-territory-stat b{font-size:14px}.vp-territory-stat small{font-size:12px!important}
.source-meta span,.source-row small,.source-focus-overlay span,.source-focus-overlay small,.sync-status-head span,.sync-status-metrics,.sync-status-event,.sync-log-title span,.sync-log-title small,.sync-log-row,.sync-log-row em,.sync-log-empty,.sync-unavailable,.active-filter-note,.filter-panel label,.filter-panel small{font-size:12px!important;color:#a9c4d1!important}
.source-row,.sync-row{font-size:13px!important}.source-row b,.sync-row span{color:#edfaff}
.search-results-panel,.sync-status-panel{font-size:14px}.search-results-panel{left:270px;top:98px;background:rgba(10,36,53,.99)}.sync-status-panel{left:270px;top:98px;background:rgba(10,36,53,.99)}
.vp-wall{background:radial-gradient(circle at 50% 0,rgba(55,156,188,.25),transparent 34%),rgba(7,22,34,.99)}.vp-wall-event{background:linear-gradient(180deg,rgba(18,61,81,.94),rgba(11,39,58,.95));border-color:var(--vp-line)!important}.vp-wall-event time,.vp-wall-event span,.vp-wall-event small,.vp-wall-head button{font-size:12px!important}.vp-wall-event b{font-size:17px}.vp-footer{font-size:12px;color:#9bb9c6}

.vp-reveal{opacity:0;transform:translateY(13px) scale(.993)}.vp-reveal.vp-inview{opacity:1;transform:none;transition:opacity .58s ease var(--vp-delay,0ms),transform .58s cubic-bezier(.2,.8,.2,1) var(--vp-delay,0ms)}

@media (max-width:1400px){
  .vp-live-lanes{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vp-hero{grid-template-columns:1fr}.vp-hero-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:1280px){
  .vp-shell{grid-template-columns:230px minmax(0,1fr)}.vp-rail{width:230px}.vp-workspace{grid-column:2}.live-ribbon{left:230px}.search-results-panel,.sync-status-panel{left:242px}
  .vp-brand{padding:16px 12px}.vp-mark{width:56px;height:56px}.vp-mainnav .navitem{grid-template-columns:25px 1fr;padding:9px 8px}.vp-mainnav .navitem span{font-size:inherit!important}.vp-mainnav .navitem>span>b{font-size:14px}.vp-mainnav .navitem>span>small{font-size:13px!important}
  .vp-topbar{grid-template-columns:1fr}.vp-topbar .top-actions{justify-content:stretch}.vp-searchbox{flex:1;min-width:260px}.vp-hero{grid-template-columns:1fr}.vp-hero-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .vp-mosaic{grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr)}.vp-mosaic>.vp-map-card{grid-column:1;grid-row:span 3}.vp-monitor-card{grid-column:2}.vp-engine-strip{grid-template-columns:1fr}.vp-engine-item{border-right:0;border-bottom:1px solid rgba(130,214,235,.13)}.vp-engine-item:last-child{border-bottom:0}
}
@media (max-width:980px){
  body.vp-body{padding-top:34px}.vp-shell{display:block}.vp-rail{top:34px;position:sticky;width:100%;height:auto;bottom:auto;background:rgba(10,34,50,.97)}.vp-brand{height:72px}.vp-brand .brand-copy{font-size:13px;max-width:none}.vp-brand .brand-copy small{font-size:12px!important}.vp-mainnav{display:flex!important;flex-direction:row;overflow-x:auto}.vp-mainnav .navitem{display:flex;min-width:max-content;min-height:44px;padding:8px 10px}.vp-mainnav .navitem>span>small{display:none!important}.vp-mainnav .navitem>span>b{font-size:13px}.vp-rail-bottom{display:none}.vp-workspace{min-width:0}.vp-topbar{top:34px;position:sticky;padding:10px 12px}.vp-masthead{display:none}.vp-workspace main{padding:12px}.vp-hero{padding:22px}.vp-hero h1{font-size:36px}.vp-hero p{font-size:14px!important}.vp-hero-metrics{grid-template-columns:repeat(2,1fr)}.vp-mosaic{grid-template-columns:1fr}.vp-mosaic>.vp-map-card,.vp-monitor-card{grid-column:auto;grid-row:auto}.vp-map-stage{grid-template-columns:1fr}.vp-live-lanes{grid-template-columns:1fr 1fr}.search-results-panel,.sync-status-panel{left:10px;right:10px;top:150px}.live-ribbon{left:0}
}
@media (max-width:620px){
  .vp-demo-banner{height:auto;min-height:38px;padding:5px 9px;font-size:10px;line-height:1.2;gap:6px}.vp-demo-banner span{display:none}body.vp-body{padding-top:38px}.vp-rail{top:38px}.vp-topbar{top:38px}.vp-mainnav .navitem>span>b{font-size:12px}.vp-hero h1{font-size:31px}.vp-hero-metrics{grid-template-columns:1fr}.vp-live-lanes{grid-template-columns:1fr}.vp-engine-item{padding:11px}.vp-page-title h1{font-size:28px}.vp-page-title p{font-size:14px!important}.vp-searchbox input{font-size:13px}.vp-workspace main{padding:9px}
}
@media (prefers-reduced-motion:reduce){body.vp-body::before,body.vp-body::after,.vp-hero::before,.vp-lane::before,.engine-led,.lane-dot,.lane-empty::after,.activity-empty::after,.trend-placeholder::after{animation:none!important}.vp-reveal{opacity:1!important;transform:none!important}}


/* === V0.14.7 DEMO ENHANCEMENTS === */
.info-tooltip{width:min(390px,calc(100vw - 24px));padding:14px 15px;font-size:12px;line-height:1.58;border-color:rgba(81,145,221,.88);background:linear-gradient(180deg,rgba(6,24,45,.985),rgba(4,17,33,.985));box-shadow:0 18px 44px rgba(0,0,0,.5),0 0 0 1px rgba(115,177,255,.08) inset}
.info-tooltip b{font-size:13px;margin-bottom:6px;letter-spacing:.02em}.info-tooltip strong{display:block;font-size:15px;margin:6px 0 4px}.info-tooltip small{font-size:12px;color:#9cb7d8;line-height:1.55}
.has-demo-info{position:relative}
.info-bubble-hint{position:absolute;top:10px;right:10px;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1px solid rgba(115,177,255,.46);background:rgba(11,32,59,.88);color:#cfe5ff;font-size:11px;font-weight:800;box-shadow:0 0 14px rgba(92,171,255,.18)}

.demo-stream-slot{margin-top:12px}
.demo-stream{position:relative;overflow:hidden;border:1px solid rgba(83,140,192,.2);background:linear-gradient(180deg,rgba(6,24,43,.72),rgba(8,30,54,.84));border-radius:12px;padding:0 12px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02)}
.demo-stream::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(160,225,255,.05),transparent 18%,transparent 82%,rgba(160,225,255,.04));pointer-events:none}
.demo-stream-track{display:flex;flex-direction:column;gap:10px;animation:demoStreamVertical 28s linear infinite;will-change:transform;padding:12px 0}
.demo-stream:hover .demo-stream-track{animation-play-state:paused}
.demo-stream-lane{height:112px}
.demo-stream-feed{height:126px}
.demo-stream-cards{height:136px}
.demo-stream-timeline{height:120px}
.demo-stream-compact{height:100px}
.demo-stream-micro{height:86px}
.demo-stream-item{display:grid;gap:5px;padding:0 2px 10px;border-bottom:1px solid rgba(255,255,255,.06)}
.demo-stream-item:last-child{border-bottom:0}
.demo-stream-kicker{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:800;letter-spacing:.08em;color:#7fd5ff;text-transform:uppercase}
.demo-stream-kicker::before{content:"•";font-size:12px;color:#5ae48d}
.demo-stream-value{display:block;font-size:15px;line-height:1.2;font-weight:800;color:#ffd97b;text-shadow:0 0 16px rgba(240,194,90,.15)}
.demo-stream-item b{font-size:14px;line-height:1.42;color:#f5fbff;font-weight:700}
.demo-stream-item small{display:block;font-size:12px;line-height:1.55;color:#a7bed8;white-space:normal;overflow:visible;text-overflow:clip}
@keyframes demoStreamVertical{0%{transform:translateY(0)}100%{transform:translateY(-50%)}}

.vp-lane-body.has-demo-stream,.public-activity-feed.has-demo-stream,.small-feed.has-demo-stream,.expense-feed.has-demo-stream,.vp-live-page-channels.has-demo-stream,.radar-list.has-demo-stream,.vp-doc-live-grid.has-demo-stream,.activity-timeline.has-demo-stream,#officialsSearchResults.has-demo-stream,#expenseDirectoryResults.has-demo-stream,#movingGrid.has-demo-stream{height:auto!important;min-height:120px}
.vp-lane-body.has-demo-stream .demo-stream{margin-top:0}
.public-activity-feed.has-demo-stream .demo-stream,.small-feed.has-demo-stream .demo-stream,.expense-feed.has-demo-stream .demo-stream,.radar-list.has-demo-stream .demo-stream,.vp-doc-live-grid.has-demo-stream .demo-stream,.activity-timeline.has-demo-stream .demo-stream,#officialsSearchResults.has-demo-stream .demo-stream,#expenseDirectoryResults.has-demo-stream .demo-stream,#movingGrid.has-demo-stream .demo-stream,.vp-live-page-channels.has-demo-stream .demo-stream{height:100%}

.vp-official-types article,.vp-expense-categories article,.info-card,.vp-kpi,.vp-manifesto,.vp-monitor-card,.vp-territory-detail,.vp-freshness-card{overflow:hidden}
.vp-official-types article .demo-stream,.vp-expense-categories article .demo-stream{height:92px}
.vp-official-types article .demo-stream-item b,.vp-expense-categories article .demo-stream-item b{font-size:12px}
.vp-official-types article .demo-stream-item small,.vp-expense-categories article .demo-stream-item small{font-size:11px;line-height:1.45}
.vp-manifesto .demo-stream{height:94px}
.info-card .demo-stream{height:102px}.vp-kpi .demo-stream{height:76px}
.vp-monitor-card .demo-stream,.vp-territory-detail .demo-stream,.vp-freshness-card .demo-stream{height:118px}

.sync-overlay .sync-card{max-width:860px}
.sync-overlay .sync-title{letter-spacing:.08em}.sync-overlay .sync-subtitle{font-size:14px;line-height:1.6;color:#c8daee}.sync-overlay .sync-footer{font-size:13px}

@media (max-width:1120px){
  .demo-stream-item b{font-size:13px}.demo-stream-item small{font-size:11px}
  .info-tooltip{width:min(360px,calc(100vw - 20px))}
}
@media (max-width:720px){
  .demo-stream-lane,.demo-stream-feed,.demo-stream-cards,.demo-stream-timeline,.demo-stream-compact{height:118px}
  .info-bubble-hint{top:8px;right:8px}
}

/* === V0.14.8 IMMERSIVE EXPLANATION LAYER === */
.vp-topbar .top-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.vp-topbar .control-btn{white-space:nowrap}
.explain-btn,.tour-btn{border-color:rgba(114,222,247,.42)!important;background:linear-gradient(180deg,rgba(22,70,94,.92),rgba(13,49,70,.92))!important}
.vp-searchbox{position:relative;overflow:visible}
.vp-searchbox .info-bubble-hint{top:-8px;right:-8px;z-index:4}
.vp-searchbox input{transition:opacity .2s ease,transform .2s ease}.vp-searchbox input.hint-changing{opacity:.35;transform:translateY(-2px)}

.vp-status-legend{position:sticky;top:96px;z-index:35;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 20px;border-bottom:1px solid rgba(108,198,226,.16);background:rgba(7,25,39,.93);backdrop-filter:blur(14px);box-shadow:0 8px 22px rgba(0,8,15,.12)}
.legend-title{font-size:11px;font-weight:900;letter-spacing:.1em;color:#9fc3d1;margin-right:2px}
.legend-chip{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:0 9px;border:1px solid rgba(113,203,229,.18);border-radius:999px;background:rgba(15,48,68,.68);color:#d8edf4;font-size:11px;font-weight:800;letter-spacing:.035em}
.legend-chip i,.vp-explain-legend i{width:8px;height:8px;border-radius:50%;display:inline-block;box-shadow:0 0 10px currentColor}
.legend-chip.real i,.vp-explain-legend i.real{background:#63e5aa;color:#63e5aa}.legend-chip.demo i,.vp-explain-legend i.demo{background:#ffd15f;color:#ffd15f}.legend-chip.partial i,.vp-explain-legend i.partial{background:#ff9b5f;color:#ff9b5f}.legend-chip.unpublished i,.vp-explain-legend i.unpublished{background:#ff6677;color:#ff6677}.legend-chip.analysis i,.vp-explain-legend i.analysis{background:#65b7ff;color:#65b7ff}
.legend-chip:hover{transform:translateY(-1px);border-color:rgba(123,226,251,.45);background:rgba(22,66,88,.86)}

/* Info cards: deliberately light and visually distinct from the console */
.info-tooltip{width:min(460px,calc(100vw - 24px))!important;max-height:min(70vh,560px);overflow:auto;padding:16px 17px!important;border:1px solid #6ccce8!important;border-radius:14px!important;background:linear-gradient(180deg,#f6fbff 0%,#e9f5fb 100%)!important;color:#0b2841!important;box-shadow:0 24px 70px rgba(0,9,18,.42),0 0 0 2px rgba(116,218,244,.16)!important;font-size:13px!important;line-height:1.58!important}
.info-tooltip b{color:#06233a!important;font-size:14px!important}.info-tooltip strong{color:#0c5786!important;font-size:16px!important}.info-tooltip small,.info-tooltip div{color:#274b67!important;font-size:13px!important;line-height:1.6!important}
.info-tooltip::after{content:"INFO";position:absolute;right:12px;top:10px;font-size:9px;font-weight:900;letter-spacing:.12em;color:#4e8bab}
.info-bubble-hint{width:22px!important;height:22px!important;background:#eefaff!important;border-color:#6fcce8!important;color:#0d547d!important;box-shadow:0 0 0 2px rgba(13,84,125,.08),0 0 18px rgba(82,207,240,.25)!important;z-index:6}

/* Stable internal scrolling: animations may move inside, never change the geometry of the dashboard */
.demo-stream,.vp-horizontal-ticker,.vp-analysis-card,.vp-security-card,.vp-euro-journey,.vp-market-network,.vp-remuneration-card,.vp-source-matrix,.vp-data-provenance,.vp-missing-data,.vp-parliament-room{contain:layout paint;overflow:hidden}
.demo-stream-slot{min-width:0}
.demo-stream-track{animation-duration:34s!important}
.demo-stream-item{min-height:74px}
.demo-stream-item b{overflow-wrap:anywhere}
.demo-stream-item small{overflow-wrap:anywhere}

.vp-horizontal-ticker{position:relative;overflow:hidden;border:1px solid rgba(109,209,236,.18);border-radius:10px;background:rgba(6,25,43,.72);height:42px;margin-top:12px}
.vp-horizontal-ticker::before,.vp-horizontal-ticker::after{content:"";position:absolute;z-index:2;top:0;bottom:0;width:42px;pointer-events:none}.vp-horizontal-ticker::before{left:0;background:linear-gradient(90deg,#0b2b40,transparent)}.vp-horizontal-ticker::after{right:0;background:linear-gradient(270deg,#0b2b40,transparent)}
.ticker-track{display:flex;align-items:center;gap:44px;width:max-content;min-width:100%;height:100%;padding:0 28px;animation:vpTicker 34s linear infinite;will-change:transform}
.ticker-track span{white-space:nowrap;font-size:12px;font-weight:700;color:#d9edf5;letter-spacing:.015em}.ticker-track span::before{content:"◆";margin-right:9px;color:#ffd26b}
.vp-horizontal-ticker:hover .ticker-track{animation-play-state:paused}
@keyframes vpTicker{to{transform:translateX(-50%)}}

.vp-analysis-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:12px;margin-top:14px}
.vp-analysis-card,.vp-security-card{min-height:258px;background:linear-gradient(180deg,rgba(15,51,71,.96),rgba(8,29,45,.98))}
.demo-pill{display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border:1px solid rgba(255,207,91,.42);border-radius:999px;background:rgba(120,88,12,.22);color:#ffd978;font-size:10px;font-weight:900;letter-spacing:.08em}.demo-pill.analysis{border-color:rgba(93,179,255,.4);background:rgba(29,87,138,.22);color:#8fc9ff}
.vp-analysis-leds{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}
.vp-analysis-leds span,.vp-security-checks span{display:flex;align-items:center;gap:9px;min-height:34px;padding:7px 9px;border:1px solid rgba(104,203,230,.14);border-radius:8px;background:rgba(8,30,47,.62);font-size:11px;color:#c2dbe4}
.vp-analysis-leds i{width:8px;height:8px;border-radius:50%;background:#62e2ab;box-shadow:0 0 11px rgba(98,226,171,.6);animation:vpLedPulse 2.5s ease-in-out infinite}.vp-analysis-leds span:nth-child(3n) i{background:#ffd06f;box-shadow:0 0 11px rgba(255,208,111,.5)}
.vp-security-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.vp-security-checks b{color:#6fe1ae;font-size:15px}.vp-security-checks span:nth-child(n+5) b{color:#ffd06d}
.vp-security-flow{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin-top:14px;padding:12px;border-radius:10px;background:rgba(7,26,43,.72);font-size:11px;color:#c3dce5}.vp-security-flow span{padding:6px 8px;border-radius:7px;background:rgba(23,65,84,.74)}.vp-security-flow i{font-style:normal;color:#75d9f0}

.vp-sim-city-layer{position:absolute;inset:0;pointer-events:none;z-index:4}.vp-sim-city-layer .sim-badge{position:absolute;left:12px;bottom:12px;padding:4px 7px;border:1px solid rgba(255,208,102,.38);border-radius:999px;background:rgba(56,42,8,.68);color:#ffd97d;font-size:9px;font-weight:900;letter-spacing:.08em}.vp-sim-city-layer i{position:absolute;left:var(--x);top:var(--y);width:7px;height:7px;margin:-3px;border-radius:50%;background:#91efff;box-shadow:0 0 13px #70eaff;animation:vpCityPulse 3s ease-in-out infinite var(--d)}.vp-sim-city-layer i::after{content:attr(data-city);position:absolute;left:10px;top:-6px;opacity:0;transition:opacity .2s;background:rgba(5,24,39,.88);padding:3px 6px;border-radius:5px;color:#dffaff;font-size:9px;white-space:nowrap}.vp-map-card:hover .vp-sim-city-layer i::after{opacity:.8}@keyframes vpCityPulse{50%{transform:scale(1.8);opacity:.6}}

.vp-euro-journey{margin-top:0}.vp-euro-flow{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;padding:18px 12px;margin-top:8px;border-radius:12px;background:linear-gradient(90deg,rgba(15,57,77,.74),rgba(10,39,60,.78))}.vp-euro-flow span{padding:9px 11px;border:1px solid rgba(111,213,239,.22);border-radius:9px;background:rgba(11,38,57,.82);font-size:11px;font-weight:800;color:#e8f8ff;letter-spacing:.04em}.vp-euro-flow i{font-style:normal;color:#79def3;font-size:20px}

.vp-market-relations{display:grid;gap:10px;margin-top:10px}.vp-market-relations>div{display:grid;grid-template-columns:minmax(150px,1fr) 30px minmax(220px,1.3fr) 30px minmax(150px,1fr);align-items:center;gap:8px;padding:12px;border:1px solid rgba(106,205,231,.16);border-radius:11px;background:rgba(7,29,46,.72)}.vp-market-relations b,.vp-market-relations span{text-align:center;font-size:12px;color:#edfaff}.vp-market-relations strong{color:#ffd277}.vp-market-relations i{text-align:center;font-style:normal;color:#79dbef;font-size:20px}

.vp-parliament-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:10px}.vp-parliament-grid>div{position:relative;overflow:hidden;min-height:86px;padding:12px;border:1px solid rgba(108,199,227,.17);border-radius:10px;background:rgba(8,30,47,.72)}.vp-parliament-grid b{display:block;color:#9beeff;font-size:11px;letter-spacing:.08em;margin-bottom:10px}.vp-parliament-grid span{display:block;color:#e8f7fc;font-size:12px;line-height:1.45;animation:vpParliamentRise 8s linear infinite}@keyframes vpParliamentRise{0%{transform:translateY(34px);opacity:0}18%,74%{transform:translateY(0);opacity:1}100%{transform:translateY(-42px);opacity:0}}

.vp-remuneration-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}.vp-remuneration-grid span{min-height:54px;display:flex;align-items:center;justify-content:center;text-align:center;padding:9px;border:1px solid rgba(105,202,230,.18);border-radius:9px;background:rgba(7,30,48,.66);font-size:11px;color:#d9eef5}

.vp-matrix{display:grid;grid-template-columns:minmax(120px,1.4fr) repeat(6,minmax(72px,1fr));gap:1px;margin-top:12px;border:1px solid rgba(108,201,228,.2);border-radius:10px;overflow:auto;background:rgba(76,135,160,.16)}.vp-matrix>*{min-height:38px;display:flex;align-items:center;justify-content:center;margin:0;background:rgba(7,29,46,.96);font-size:11px}.vp-matrix b{justify-content:flex-start;padding-left:10px;color:#dff5fb}.vp-matrix .head{font-size:9px;font-weight:900;letter-spacing:.06em;color:#9dc6d4}.vp-matrix i{font-style:normal;font-size:17px}.vp-matrix i.full{color:#5ee0a7}.vp-matrix i.partial{color:#ffc766}.vp-matrix i.none{color:#ff7a86}
.vp-method-grid{margin-top:12px}.vp-provenance-flow{display:grid;gap:7px;margin-top:12px}.vp-provenance-flow span{min-height:36px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(104,203,229,.17);border-radius:8px;background:rgba(8,31,49,.72);font-size:11px;font-weight:800;color:#e8f8fc}.vp-provenance-flow i{text-align:center;font-style:normal;color:#78ddf2;font-size:17px;animation:vpLedPulse 2.8s ease-in-out infinite}
.vp-missing-data ul{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:9px}.vp-missing-data li{padding:10px;border:1px solid rgba(255,118,129,.16);border-radius:9px;background:rgba(58,17,29,.18)}.vp-missing-data li b{display:block;color:#ffdfe2;font-size:12px;margin-bottom:4px}.vp-missing-data li span{font-size:11px;color:#c8aeb3}

.vp-explain-panel{position:fixed;z-index:160;top:105px;right:18px;width:min(430px,calc(100vw - 36px));max-height:calc(100vh - 140px);overflow:auto;padding:16px;border:1px solid rgba(112,211,238,.36);border-radius:14px;background:linear-gradient(180deg,rgba(9,35,53,.99),rgba(5,22,37,.99));box-shadow:0 24px 70px rgba(0,0,0,.46)}.vp-explain-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.vp-explain-head span{font-size:10px;font-weight:900;letter-spacing:.11em;color:#83ddf0}.vp-explain-head h2{margin:4px 0 0;font-size:22px;color:#fff}.vp-explain-head button{width:34px;height:34px;border-radius:9px;border:1px solid rgba(108,205,231,.24);background:rgba(15,49,69,.7);color:#dffaff}.vp-explain-body{font-size:13px;line-height:1.65;color:#b9d2dc}.vp-explain-legend{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.vp-explain-legend span{display:inline-flex;align-items:center;gap:7px;padding:6px 8px;border-radius:999px;background:rgba(13,47,67,.72);font-size:10px;color:#d8edf4}

.vp-tour-backdrop{position:fixed;z-index:180;inset:0;background:rgba(1,9,16,.68);backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:18px}.vp-tour-card{position:relative;width:min(620px,calc(100vw - 30px));padding:24px;border:1px solid rgba(109,213,240,.36);border-radius:16px;background:linear-gradient(180deg,#103c52,#0a2b41);box-shadow:0 28px 80px rgba(0,0,0,.5);color:#fff}.vp-tour-card h2{margin:8px 0 14px;font-size:27px}.vp-tour-content{min-height:150px;padding:16px;border-radius:12px;background:rgba(7,28,44,.72);border:1px solid rgba(106,201,228,.15)}.vp-tour-content h3{margin:0 0 8px;color:#9ceeff;font-size:18px}.vp-tour-content p{margin:0;color:#c7dde6;font-size:14px;line-height:1.65}.vp-tour-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:16px}.vp-tour-actions button{min-height:38px;padding:0 14px;border:1px solid rgba(109,210,237,.29);border-radius:9px;background:rgba(15,52,72,.82);color:#e7f8ff;font-weight:800}.vp-tour-actions span{font-size:12px;color:#9bc5d4}.vp-tour-highlight{position:relative;z-index:175!important;box-shadow:0 0 0 3px #79e4fa,0 0 40px rgba(121,228,250,.48)!important;animation:vpTourPulse 1.5s ease-in-out infinite}@keyframes vpTourPulse{50%{box-shadow:0 0 0 5px rgba(121,228,250,.55),0 0 56px rgba(121,228,250,.62)}}

.vp-wall-actions{display:flex;align-items:center;gap:14px}.vp-wall-actions time{font-variant-numeric:tabular-nums;font-size:20px;font-weight:800;color:#96ecff}.vp-wall-warning{display:block;margin-top:4px;color:#ffd67b;font-size:10px;letter-spacing:.07em}.vp-wall-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:10px!important}.vp-wall-column{position:relative;min-height:320px;overflow:hidden;padding:12px;border:1px solid rgba(111,211,237,.18);border-radius:12px;background:linear-gradient(180deg,rgba(16,55,75,.94),rgba(8,31,49,.96))}.vp-wall-column h3{margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.07);font-size:12px;letter-spacing:.09em;color:#a1efff}.vp-wall-column-track{display:grid;gap:8px;animation:vpWallRise 24s linear infinite}.vp-wall-column:hover .vp-wall-column-track{animation-play-state:paused}.vp-wall-column article{padding:10px;border-radius:9px;background:rgba(5,24,39,.72);border:1px solid rgba(106,202,228,.11)}.vp-wall-column time{display:block;color:#85ddec;font-size:10px}.vp-wall-column b{display:block;margin:4px 0;color:#fff;font-size:13px;line-height:1.4}.vp-wall-column small{font-size:9px;color:#ffd470;letter-spacing:.06em}@keyframes vpWallRise{to{transform:translateY(-45%)}}

.since-visit-panel.is-zero{display:none!important}.since-visit-chip{max-width:210px;white-space:normal;line-height:1.2}

@media (max-width:1280px){
  .vp-topbar .top-actions{justify-content:flex-start}.vp-topbar .control-btn{font-size:11px;padding:0 10px}.vp-status-legend{top:145px;padding:7px 12px}.vp-analysis-grid{grid-template-columns:1fr}.vp-remuneration-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.vp-parliament-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.vp-wall-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width:980px){
  .vp-status-legend{position:relative;top:auto}.vp-topbar .top-actions{gap:6px}.explain-btn,.tour-btn{display:none}.vp-analysis-leds,.vp-security-checks,.vp-market-relations>div,.vp-parliament-grid,.vp-remuneration-grid{grid-template-columns:1fr}.vp-market-relations>div{display:flex;flex-direction:column}.vp-market-relations i{transform:rotate(90deg)}.vp-wall-grid{grid-template-columns:1fr!important}.vp-explain-panel{top:145px;right:10px;width:calc(100vw - 20px)}
}
@media (max-width:620px){
  .vp-status-legend{gap:5px}.legend-title{width:100%}.legend-chip{font-size:9px;min-height:28px}.vp-analysis-leds,.vp-security-checks{grid-template-columns:1fr}.vp-euro-flow{flex-direction:column}.vp-euro-flow i{transform:rotate(0)}.vp-remuneration-grid{grid-template-columns:1fr}.vp-matrix{grid-template-columns:minmax(100px,1.4fr) repeat(6,minmax(64px,1fr))}.vp-tour-card{padding:18px}.vp-tour-card h2{font-size:22px}.vp-horizontal-ticker{height:46px}.ticker-track span{font-size:11px}
}
@media (prefers-reduced-motion:reduce){.ticker-track,.vp-parliament-grid span,.vp-sim-city-layer i,.vp-wall-column-track,.vp-tour-highlight{animation:none!important}.vp-tour-highlight{box-shadow:0 0 0 3px #79e4fa!important}}

/* V0.14.8 geometry hardening */
.vp-status-legend{position:relative!important;top:auto!important}
.vp-map-card{overflow:hidden!important;min-height:0!important;height:auto!important}
.vp-map-stage{height:auto!important;min-height:0!important;align-items:start!important}
.vp-map-side{align-content:start!important;grid-auto-rows:auto!important;min-width:0}
.map-visual{min-height:430px;align-self:stretch}
.vp-kpi{min-height:0!important;height:auto!important}
.vp-official-types article,.vp-expense-categories article{min-height:218px!important;height:auto!important;overflow:hidden!important}
.vp-official-types article .demo-stream-slot,.vp-expense-categories article .demo-stream-slot{margin-top:9px}
.vp-official-types article .demo-stream,.vp-expense-categories article .demo-stream{height:105px!important}
.vp-manifesto{height:auto!important;min-height:0!important}
.vp-monitor-card,.experience-card,.info-card{height:auto!important;min-width:0}
@media (max-width:1280px){.vp-map-card{grid-row:auto!important}.vp-mosaic{align-items:start}.vp-official-types article,.vp-expense-categories article{min-height:206px!important}}


/* === V0.14.9 FINITION DÉMONSTRATEUR / INFO CARDS / FAISABILITÉ === */
/* Vérité visuelle : les marqueurs qui distinguent réel et démo restent toujours lisibles. */
.legend-chip,.demo-pill,.sim-badge,.vp-wall-warning,.vp-wall-column small,.parliament-cap,.truth-pill,.demo-stream-kicker{font-size:13px!important;font-weight:900!important;line-height:1.2!important}
@media(max-width:620px){.legend-chip,.demo-pill,.sim-badge,.vp-wall-warning,.vp-wall-column small,.parliament-cap,.truth-pill,.demo-stream-kicker{font-size:12px!important}}
.vp-matrix .head,.vp-provenance-flow span,.vp-remuneration-grid span,.vp-parliament-grid b{font-size:13px!important}
.vp-explain-legend span,.vp-explain-head span{font-size:12px!important}
.ticker-track span{font-size:13px!important}

/* INFO cards : vraies fiches interactives, dimensionnées après rendu et jamais coupées. */
.info-tooltip{pointer-events:auto!important;position:fixed!important;z-index:220!important;width:min(460px,calc(100vw - 24px))!important;max-height:min(70vh,560px)!important;overflow:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable;padding:18px 18px 16px!important}
.info-tooltip:focus{outline:3px solid rgba(43,142,193,.42);outline-offset:2px}
.info-tooltip-close{position:sticky;float:right;top:0;right:0;z-index:3;width:30px;height:30px;margin:-6px -6px 6px 10px;border:1px solid rgba(20,87,126,.28);border-radius:8px;background:#fff;color:#0b4569;font-size:18px;font-weight:900;cursor:pointer}
.info-tooltip::after{right:48px!important;font-size:12px!important}
.info-bubble-hint{appearance:none;border-style:solid;padding:0;cursor:help;font-family:inherit;font-size:14px!important;line-height:1!important}
.info-bubble-hint:focus-visible{outline:3px solid #7ae8ff;outline-offset:3px}

.truth-state-zero{border-color:rgba(255,193,84,.42)!important;background:rgba(94,63,11,.16)!important;color:#f5d997!important}
.truth-state-error{border-color:rgba(255,103,113,.42)!important;background:rgba(96,20,31,.18)!important;color:#ffd1d6!important}

.vp-why-button{margin-top:16px;min-height:44px;padding:0 16px;border:1px solid rgba(119,226,250,.46);border-radius:11px;background:linear-gradient(180deg,rgba(26,83,106,.88),rgba(13,50,71,.92));color:#eefdff;font-weight:900;letter-spacing:.04em;box-shadow:0 0 24px rgba(73,199,231,.08);transition:.24s ease}
.vp-why-button:hover{transform:translateY(-2px);border-color:rgba(131,239,255,.8);box-shadow:0 12px 30px rgba(0,12,23,.26),0 0 34px rgba(73,199,231,.12)}
.vp-why-button span{color:#79e8ff;font-size:20px;margin-left:8px}

.vp-feasibility-strip{display:grid;grid-template-columns:minmax(320px,1.15fr) minmax(460px,1.5fr) auto;gap:18px;align-items:center;margin-top:14px;padding:18px 20px;background:linear-gradient(120deg,rgba(15,55,74,.96),rgba(8,31,48,.97));overflow:hidden}
.vp-feasibility-copy h2{margin:5px 0 6px;font-size:20px;color:#f6fcff}.vp-feasibility-copy p{margin:0;color:#a9c2cd;font-size:13px;line-height:1.55}
.vp-feasibility-mini-flow{position:relative;display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-width:0}.vp-feasibility-mini-flow span,.vp-feasibility-mini-flow strong{display:inline-flex;align-items:center;min-height:30px;padding:0 9px;border:1px solid rgba(109,207,233,.2);border-radius:999px;background:rgba(7,29,46,.72);color:#dff7ff;font-size:12px;font-weight:800}.vp-feasibility-mini-flow strong{border-color:rgba(117,232,253,.55);color:#80edff;box-shadow:0 0 18px rgba(105,226,248,.1)}.vp-feasibility-mini-flow i{font-style:normal;color:#75dff3;font-size:20px;animation:vpLedPulse 2.6s ease-in-out infinite}

.vp-existing-infra,.vp-constitutional-block{overflow:visible!important}.vp-infra-lead{margin:0 0 16px;color:#aec7d2;font-size:14px;line-height:1.65}.vp-infra-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.vp-infra-card{position:relative;display:flex;flex-direction:column;gap:6px;min-height:146px;padding:14px;border:1px solid rgba(103,202,229,.18);border-radius:12px;background:linear-gradient(180deg,rgba(13,47,66,.82),rgba(7,29,46,.86));text-decoration:none;transition:.22s ease}.vp-infra-card:hover{transform:translateY(-2px);border-color:rgba(114,225,249,.54);box-shadow:0 12px 28px rgba(0,10,20,.22),0 0 24px rgba(80,207,237,.08)}.vp-infra-card b{font-size:14px;color:#93eeff;letter-spacing:.05em}.vp-infra-card span{font-size:13px;color:#e9f7fb;line-height:1.45}.vp-infra-card small{margin-top:auto;font-size:12px;color:#8eabb8;line-height:1.45}
.vp-convergence{display:grid;grid-template-columns:1.25fr auto 1fr auto 1fr auto 1.15fr;gap:8px;align-items:stretch;margin-top:16px}.vp-convergence>div{display:flex;flex-direction:column;justify-content:center;gap:5px;min-height:86px;padding:12px;border:1px solid rgba(111,210,236,.18);border-radius:10px;background:rgba(7,29,46,.72)}.vp-convergence b{font-size:13px;color:#e8f9fd}.vp-convergence small{font-size:12px;color:#93afbb;line-height:1.45}.vp-convergence i{align-self:center;font-style:normal;color:#78e4fa;font-size:22px;animation:vpLedPulse 2.4s ease-in-out infinite}.vp-convergence-final{border-color:rgba(124,234,255,.48)!important;box-shadow:0 0 26px rgba(95,222,247,.08)}.vp-convergence-final b{color:#82efff}
.truth-pill{display:inline-flex;align-items:center;min-height:30px;padding:0 10px;border-radius:999px;letter-spacing:.055em}.truth-real{border:1px solid rgba(89,223,163,.38);background:rgba(22,107,72,.22);color:#83efbb}
.vp-constitutional-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}.vp-constitutional-grid article{padding:15px;border:1px solid rgba(117,209,232,.16);border-radius:11px;background:rgba(8,31,48,.74)}.vp-constitutional-grid b{display:block;color:#a5efff;font-size:13px;letter-spacing:.06em;margin-bottom:8px}.vp-constitutional-grid p{margin:0 0 10px;font-size:13px;line-height:1.6;color:#d9e9ee}.vp-constitutional-grid a{font-size:12px;color:#83d9ff;text-decoration:none;font-weight:800}

.vp-why-backdrop{position:fixed;z-index:240;inset:0;background:rgba(1,8,15,.78);backdrop-filter:blur(7px);display:flex;align-items:center;justify-content:center;padding:20px}.vp-why-modal{position:relative;width:min(1080px,calc(100vw - 28px));max-height:calc(100vh - 40px);overflow:auto;padding:26px;border:1px solid rgba(115,224,249,.36);border-radius:18px;background:linear-gradient(180deg,#103b52 0%,#08273c 100%);box-shadow:0 30px 90px rgba(0,0,0,.56);color:#effbff}.vp-why-modal h2{margin:7px 0 8px;font-size:32px}.vp-why-intro{max-width:900px;color:#c2d8e1;font-size:15px;line-height:1.7}.vp-why-architecture{display:grid;grid-template-columns:1.4fr auto 1.1fr auto 1.25fr;gap:12px;align-items:stretch;margin:20px 0}.vp-why-sources,.vp-why-output{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.vp-why-sources span,.vp-why-output span,.vp-why-core{display:flex;align-items:center;justify-content:center;text-align:center;min-height:42px;padding:8px;border:1px solid rgba(111,211,237,.19);border-radius:9px;background:rgba(6,26,42,.7);font-size:12px;font-weight:800}.vp-why-core{flex-direction:column;border-color:rgba(121,233,255,.5);box-shadow:0 0 32px rgba(94,223,248,.11)}.vp-why-core b{font-size:17px;color:#8ef1ff}.vp-why-core small{margin-top:6px;color:#9db9c4}.vp-why-architecture>i{align-self:center;font-style:normal;font-size:26px;color:#7de4f8;animation:vpLedPulse 2.2s ease-in-out infinite}.vp-why-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.vp-why-columns article{padding:15px;border-radius:11px;border:1px solid rgba(108,204,230,.17);background:rgba(7,28,44,.65)}.vp-why-columns b{color:#9ceeff;font-size:13px}.vp-why-columns p{color:#c3d9e2;font-size:13px;line-height:1.6}.vp-why-law{display:grid;grid-template-columns:auto 1fr 1fr;gap:10px;align-items:center;margin:16px 0;padding:14px;border:1px solid rgba(255,210,100,.23);border-radius:11px;background:rgba(76,55,13,.18)}.vp-why-law b{color:#ffdc82}.vp-why-law span{font-size:13px;color:#f1e3bc}.vp-why-law small{grid-column:1/-1;color:#b9c8cb;font-size:12px}
html.vp-why-open{overflow:hidden}

@media(max-width:1280px){.vp-feasibility-strip{grid-template-columns:1fr}.vp-infra-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.vp-convergence{grid-template-columns:1fr}.vp-convergence i{transform:rotate(90deg)}.vp-why-architecture{grid-template-columns:1fr}.vp-why-architecture>i{transform:rotate(90deg)}.vp-why-columns,.vp-constitutional-grid{grid-template-columns:1fr}.vp-why-law{grid-template-columns:1fr}}
@media(max-width:720px){.vp-infra-grid{grid-template-columns:1fr}.vp-why-modal{padding:18px}.vp-why-modal h2{font-size:25px}.vp-why-sources,.vp-why-output{grid-template-columns:1fr}.vp-feasibility-mini-flow span,.vp-feasibility-mini-flow strong{font-size:11px}}


/* === V0.14.10 HOTFIX PERFORMANCE === */
/* 1) La carte conserve sa richesse visuelle, mais seuls quelques nœuds et lignes pulsent réellement. */
.network-nodes circle{animation:none!important;opacity:.72;transform:none!important}
.network-nodes circle:nth-child(8n+1){animation:nodeTwinkle 3.8s ease-in-out infinite!important}
.network-lines line{animation:none!important;stroke-dasharray:none!important;opacity:.24}
.network-lines line:nth-child(12n+1){stroke-dasharray:8 18!important;animation:linePulse 11s linear infinite!important}
/* 2) Isolation du rendu des flux continus pour éviter qu'une animation provoque des recalculs de toute la page. */
.demo-stream,.ticker-viewport,.vp-wall-column{contain:layout paint style}
.demo-stream-track,.ticker-track,.vp-wall-column-track{backface-visibility:hidden;transform:translateZ(0)}
/* 3) Les animations de contenu masqué sont explicitement gelées. */
.panel[hidden] *,.vp-wall[hidden] *,.sync-overlay[hidden] *{animation-play-state:paused!important}
/* 4) Réduire les couches de composition inutiles. */
.demo-stream-track{will-change:auto!important}
.ticker-track{will-change:auto!important}
/* 5) Le mouvement principal reste visible sur les flux utiles. */
.vp-live-lanes .demo-stream-track,.vp-monitor-card .demo-stream-track,.vp-wall:not([hidden]) .vp-wall-column-track{will-change:transform!important}
