/* Porte d'accès de l'Observatoire : valeurs masquées, bandeau, formulaire et saisie du code. S'ajoute à observatoire.css. */
.obs :focus-visible { outline: 2px solid var(--shrimp); outline-offset: 2px; }
.obs .mask { font-family: var(--mono); letter-spacing: .16em; color: var(--muted-2); user-select: none; font-weight: 400; }
.obs .kpi .v .mask { font-family: var(--display); font-weight: 300; font-size: clamp(22px, 1.9vw, 28px); letter-spacing: .1em; }
.obs .kpi .delta.lockd { color: var(--muted-2); }
.obs .baro-card .bv .mask { font-family: var(--display); font-weight: 300; font-size: 22px; letter-spacing: .12em; }
.obs .hhi-num .mask { font-family: var(--display); font-weight: 300; font-size: 52px; letter-spacing: .08em; }
.obs .hhi-band.lockb { background: var(--bg-soft); color: var(--muted); }
.obs .panel-head .n.lock { background: var(--shrimp-pale-2); color: var(--shrimp-deep); }
.obs .insight-list li.lockli { color: var(--muted-2); }
.obs .insight-list li.lockli::before { color: var(--muted-2); }
.obs .lock-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; background: var(--bg-soft); border-left: 3px solid var(--shrimp); padding: 10px 14px; margin: 2px 0 16px; font-size: 12.5px; color: var(--royal-2); }
.obs .lock-strip svg { color: var(--shrimp-deep); flex: none; }
.obs .lock-strip span { flex: 1 1 260px; min-width: 0; }
.obs .btn-access { font-family: var(--mono); font-size: 10.5px; letter-spacing: .03em; padding: 6px 13px; border-radius: 999px; border: 0; background: var(--shrimp); color: #fff; cursor: pointer; white-space: nowrap; }
.obs .btn-access:hover { background: var(--shrimp-deep); }
.obs .btn-access.big { width: 100%; border-radius: 3px; padding: 12px 16px; font-size: 12px; margin-top: 4px; }
.obs .btn-ghost { font-family: var(--mono); font-size: 11px; padding: 8px 14px; border-radius: 3px; border: 1px solid var(--line); background: transparent; color: var(--royal); cursor: pointer; }
.obs table.dt tr.mrow td:not(:first-child) { color: var(--muted-2); }
.obs table.dt tr.mrow:hover { background: transparent; }
.obs table.dt tr.totrow td { font-weight: 700; border-top: 2px solid var(--line); border-bottom: 0; }
.obs table.dt tr.totrow td:not(:first-child) { font-family: var(--mono); }
.obs table.dt td em, .obs table.dt th em { font-style: italic; }
.obs table.dt td.tn { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.obs table.dt td .rup { font-family: var(--mono); font-size: 9px; color: var(--shrimp-deep); margin-left: 6px; }
.obs table.matrix td.mk { background: var(--bg-soft); color: var(--muted-2); font-weight: 400; letter-spacing: .12em; }
.obs table.matrix td.total .mask { font-weight: 400; }
.obs .spark-row.mrow .pname { color: var(--royal-2); }
.obs .spark-row .mask { font-family: var(--mono); font-size: 13px; }
.obs .spark-row svg .ghostline { stroke: var(--line); stroke-width: 1.5; stroke-dasharray: 3 3; fill: none; }
.obs .spark-row svg .sline { stroke: var(--brand-navy); stroke-width: 1.6; fill: none; stroke-linejoin: round; }
.obs .spark-row svg .sdot { fill: var(--shrimp); }
.obs .obs-svg { width: 100%; height: auto; display: block; }
.obs .obs-svg .ax { stroke: var(--line-soft); stroke-width: 1; }
.obs .obs-svg text { font-family: var(--mono); font-size: 10px; fill: var(--muted-2); }
.obs .obs-svg text.lbl { fill: var(--royal); font-size: 11px; font-weight: 600; }
.obs .obs-svg .bar { fill: var(--brand-navy); }
.obs .obs-svg .bar.hi { fill: var(--shrimp); }
.obs .ghost-chart { position: relative; height: 110px; border: 1px dashed var(--line); background: var(--shrimp-pale-2); display: grid; place-items: center; }
.obs .ghost-chart svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.obs .ghost-chart .gl { stroke: var(--line); stroke-width: 1; stroke-dasharray: 3 4; }
.obs .ghost-chart span { position: relative; font-family: var(--mono); font-size: 10.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); background: var(--panel); padding: 4px 10px; border: 1px solid var(--line-soft); }
.obs .sr { position: absolute; left: -9999px; }
.obs table.src caption { text-align: left; }
.obs table.src td.tab { font-weight: 400; white-space: normal; }
.obs table.src td:first-child { white-space: normal; }
.obs table.src td { font-size: 12px; }
.obs .gate-form { display: grid; gap: 12px; background: var(--bg-soft); border-left: 3px solid var(--shrimp); padding: 16px 18px; }
.obs .fld { display: grid; gap: 4px; }
.obs .fld label { font-family: var(--mono); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--royal-2); }
.obs .fld .opt { color: var(--muted-2); text-transform: none; letter-spacing: 0; }
.obs .gate-form input[type=text], .obs .gate-form input[type=email], .obs .gate-form input[type=tel], .obs .gate-form select { font: inherit; font-size: 13px; color: var(--royal); background: #fff; border: 1px solid var(--line); border-radius: 3px; padding: 9px 11px; width: 100%; min-width: 0; }
.obs .chk { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 10px; font-size: 12px; color: var(--muted); line-height: 1.5; }
.obs .chk input { margin-top: 3px; accent-color: var(--shrimp); }
.obs .ferr { margin: 0; font-size: 12px; color: var(--shrimp-deep); }
.obs .legal { margin: 0; font-size: 11px; color: var(--muted-2); }
.obs .gate-done { display: grid; gap: 10px; background: var(--bg-soft); border-left: 3px solid var(--shrimp); padding: 16px 18px; }
.obs .gate-done strong { font-family: var(--display); font-weight: 600; font-size: 22px; color: var(--royal); }
.obs .gate-done p { margin: 0; font-size: 13px; color: var(--muted); }
.obs .gate-done button { justify-self: start; }
.obs .section-nav button.sel { border-color: var(--shrimp); color: var(--shrimp-deep); }
@media (max-width: 900px) { .obs .panel-row { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 760px) {
  .obs .hhi-box { flex-wrap: wrap; gap: 10px 16px; }
  .obs .hhi-num .mask { font-size: 38px; }
  .obs .hhi-meta { flex: 1 1 100%; min-width: 0; }
  .obs .spark-row { grid-template-columns: minmax(0, 1fr) 64px 48px; gap: 8px; }
  .obs .spark-row .mask { letter-spacing: .06em; }
  .obs .kpi .v .mask { font-size: 20px; }
  .obs .lock-strip span { flex-basis: 100%; }
}
.obs .spark-row { grid-template-columns: minmax(0, 1fr) 90px 92px 56px; }
.obs .spark-row .cur { white-space: nowrap; }
@media (max-width: 760px) { .obs .spark-row { grid-template-columns: minmax(0, 1fr) 84px 48px; } }

.obs .access-banner { background: var(--royal-3); color: #F5F4F0; border-bottom: 3px solid var(--shrimp); }
.obs .access-in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; padding-block: 16px; }
.obs .access-txt { display: grid; gap: 2px; flex: 1 1 380px; min-width: 0; }
.obs .access-txt strong { font-family: var(--display); font-weight: 600; font-size: 24px; letter-spacing: .01em; line-height: 1.1; color: #fff; }
.obs .access-txt span { font-size: 13px; color: #CBD0E6; max-width: 70ch; }
.obs .btn-access.cta-lg { font-size: 13px; padding: 13px 26px; box-shadow: 0 0 0 0 rgba(214,0,122,.5); animation: obs-cta-pulse 2.8s ease-out infinite; }
@keyframes obs-cta-pulse { 0% { box-shadow: 0 0 0 0 rgba(214,0,122,.55); } 70% { box-shadow: 0 0 0 10px rgba(214,0,122,0); } 100% { box-shadow: 0 0 0 0 rgba(214,0,122,0); } }
.obs .tb-right .btn-access { font-size: 11px; padding: 8px 16px; }
.obs .cta-card { display: grid; gap: 10px; align-content: start; background: var(--bg-soft); border-left: 3px solid var(--shrimp); padding: 18px 20px; }
.obs .cta-card h3 { font-family: var(--display); font-weight: 600; font-size: 22px; }
.obs .cta-card p { margin: 0; font-size: 13px; color: var(--muted); }
.obs .access-dialog { border: 0; border-top: 3px solid var(--shrimp); padding: 0; width: min(580px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); background: var(--panel); color: var(--royal); box-shadow: 0 24px 60px rgba(15,27,77,.35); overflow: hidden; }
.obs .access-dialog::backdrop { background: rgba(15,27,77,.6); }
.obs .dlg-in { position: relative; padding: 24px 26px 22px; overflow-y: auto; max-height: calc(100dvh - 38px); display: grid; gap: 12px; }
.obs .dlg-in h2 { font-family: var(--display); font-weight: 600; font-size: 28px; line-height: 1.05; padding-right: 36px; }
.obs .dlg-sub { margin: 0; font-size: 13px; color: var(--muted); }
.obs .dlg-close { position: absolute; top: 10px; right: 12px; width: 34px; height: 34px; border: 0; background: transparent; font-size: 26px; line-height: 1; color: var(--muted); cursor: pointer; }
.obs .dlg-close:hover { color: var(--royal); }
.obs .access-dialog .gate-form { background: transparent; border-left: 0; padding: 0; }
.obs .frow { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.obs .gate-form input[aria-invalid="true"] { border-color: var(--shrimp); box-shadow: 0 0 0 1px var(--shrimp); }
@media (max-width: 560px) { .obs .frow { grid-template-columns: minmax(0, 1fr); } .obs .dlg-in { padding: 20px 18px; } .obs .btn-access.cta-lg { width: 100%; } }
@media (prefers-reduced-motion: reduce) { .obs .btn-access.cta-lg { animation: none; } }

.obs [hidden] { display: none !important; }

/* Bandeau d'accès : rose clair de la charte, texte bleu marine, sans noir */
.obs .access-banner { background: var(--shrimp-pale); color: var(--brand-navy); border-bottom: 3px solid var(--shrimp); border-top: 1px solid var(--line); }
.obs .access-txt strong { color: var(--brand-navy); }
.obs .access-txt span { color: var(--brand-navy-2); }
.obs .btn-access.cta-lg { box-shadow: 0 0 0 0 rgba(214,0,122,.45); }

/* — titres : site.css impose des tailles !important sur h2/h3, comme pour .panel-head h2 dans observatoire.css — */
.obs .dlg-in h2 { font-size: 28px !important; font-weight: 600; font-family: var(--display); line-height: 1.05; }
.obs .cta-card h3 { font-size: 22px !important; font-weight: 600; font-family: var(--display); }
.obs .faq-q { font-size: 15px !important; font-weight: 600; font-family: var(--sans); color: var(--royal); margin: 0 0 4px; line-height: 1.35; }
.obs .faq-item { padding: 12px 0; border-bottom: 1px solid var(--line-soft); }
.obs .faq-item:last-child { border-bottom: 0; }
.obs .faq-item p { margin: 0; font-size: 13px; color: var(--royal-2); line-height: 1.6; max-width: 90ch; }
.obs .tot-table { max-width: 420px; margin-bottom: 14px; }
.obs .tot-table td.tn { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.obs .prod-note { text-align: left !important; font-size: 11.5px; color: var(--muted); font-weight: 400 !important; cursor: default; }
.obs .hp { position: absolute; left: -9999px; }
.obs .access-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
.obs .link-code { font: inherit; font-size: 12.5px; background: none; border: 0; padding: 4px 2px; color: var(--brand-navy); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.obs .code-form { flex: 1 1 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.obs .code-form label { font-family: var(--mono); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: var(--brand-navy-2); }
.obs .code-form input { font: inherit; font-family: var(--mono); letter-spacing: .08em; font-size: 14px; color: var(--royal); background: #fff; border: 1px solid var(--line); border-radius: 3px; padding: 9px 11px; width: 240px; max-width: 100%; text-transform: uppercase; }
.obs .code-form .ferr { flex: 1 1 100%; }
.obs .unlocked-bar { background: var(--bg-soft); border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: 11px; color: var(--royal-2); }
.obs .unlocked-bar .obs-wrap { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 14px; padding-block: 9px; }
.obs .unlocked-bar b { color: var(--shrimp-deep); }
.obs .unlocked-bar button { font: inherit; background: none; border: 0; color: var(--royal-2); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.obs .gate-form a, .obs .legal a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.obs .spark-row .chg.flat { color: var(--muted-2); }
