/* Palette commune Flashart. Chargée après les composants et leurs styles locaux.
   Les couleurs des visuels et logos clients ne sont pas modifiées. */
:root {
  --primary-blue:#1c76bc;
  --primary-orange:#f68f45;
  --brand-blue-deep:#135e97;
  --brand-orange-deep:#9c4315;
  --fa-orange-text:#9c4315;
  --text-black:#0f172a;
  --text-dark-gray:#334155;
  --text-muted:#526176;
  --text-light:#526176;
  --bg-white:#fff;
  --bg-light:#f8fafc;
  --bg-soft:#f1f5f9;
  --bg-dark:#0f172a;
  --bg-canvas-top:#fff;
  --bg-canvas-mid:#f8fafc;
  --bg-canvas-bottom:#f1f5f9;
  --brand-blue-soft:rgba(28,118,188,.1);
  --brand-blue-line:rgba(28,118,188,.24);
  --brand-orange-soft:rgba(246,143,69,.1);
  --brand-orange-line:rgba(246,143,69,.28);
}
body { background:var(--bg-white); }
.hero-title,.info-title,.agency-title,.projets-title,.section-title,
.project-header > .project-title { color:var(--text-black); }
.service-detail-title,.faq-title,.news-main-title,.fa-intro h1 { color:var(--brand-blue-deep); }
.hero-subtitle,.hero-sidecard-text,.info-text,.section-intro,.news-teaser,
.article-text,.article-section > p,.intro-description,.module-list li,
.process-box p,.process-steps li,.choice-note { color:var(--text-dark-gray); }
.eyebrow { background:#fff5ed; border-color:var(--brand-orange-line); color:var(--fa-orange-text); }
.home-page .hero-kicker,.hero-index,.hero-pillar span,.home-page .hero-sidecard-label,
.home-page .rating-value,.status-pill b,.form-group label > span,.field-legend > span,
.flashart-team-v6 .flashart-team-eyebrow,.flashart-team-skill > span { color:var(--fa-orange-text); }
.home-page .hero-proofbar-inner { background:#0f2e49; border-color:#294a66; }
.home-page .hero-proofbar-copy { color:#edf3f8; }
.home-page .hero-proofbar-list span,
.home-page .project-type,.home-page .stack-card .project-type {
  background:var(--primary-orange) !important; color:var(--text-black) !important;
  border-color:transparent; box-shadow:none;
}
.btn-contact,.btn-voir-plus,.btn-news,.btn-submit-black {
  background:var(--primary-blue); color:#fff; border-color:var(--primary-blue);
  box-shadow:0 8px 22px rgba(19,94,151,.14);
}
.btn-contact::before,.btn-voir-plus::before,.btn-news::before,.btn-submit-black::before,
.btn-contact::after,.btn-voir-plus::after,.btn-news::after,.btn-submit-black::after { background:none; }
.btn-contact:hover,.btn-voir-plus:hover,.btn-news:hover,.btn-submit-black:hover {
  background:var(--brand-blue-deep); color:#fff; border-color:var(--brand-blue-deep);
  box-shadow:0 10px 26px rgba(19,94,151,.19);
}
.btn-secondary,.btn-secondary-inverse {
  background:#fff; color:var(--brand-blue-deep); border-color:#aec6da;
  box-shadow:0 5px 16px rgba(15,23,42,.06);
}
.btn-secondary:hover,.btn-secondary-inverse:hover {
  background:#edf5fb; color:var(--brand-blue-deep); border-color:var(--primary-blue);
}
.text-link:hover { color:var(--brand-blue-deep); }
.slide-subtitle,.fa-kicker,.fa-feature-index,.fa-feature-link,
.flashart-project-type,.flashart-case-kicker,.flashart-case-factor h3 {
  color:var(--brand-blue-deep);
}
.projects-page .filter-btn { background:#fff; color:var(--text-dark-gray); border-color:#cbd5e1; }
.projects-page .filter-btn.active,.projects-page .filter-btn:hover {
  background:var(--brand-blue-deep); color:#fff; border-color:var(--brand-blue-deep);
}
.choice-input:checked + .choice-card,.choice-input:checked + .budget-choice {
  background:#edf5fb; border-color:var(--primary-blue); box-shadow:0 0 0 2px rgba(28,118,188,.15);
}
.form-input::placeholder,.form-textarea::placeholder { color:var(--text-muted); opacity:1; }
.footer {
  background:var(--bg-dark); --footer-title:#fff; --footer-text:#d6dfeb;
  --footer-muted:#aebed0; --footer-line:#394860;
}
.footer .footer-links li,.footer .footer-links a,.footer .newsletter-input,.footer .newsletter-btn { color:var(--footer-text); }
.footer .footer-copyright,.footer .newsletter-input::placeholder { color:var(--footer-muted); opacity:1; }
.footer .social-icon { background:var(--primary-orange); color:var(--text-black); }
.footer .social-icon:hover { background:#ffad72; color:var(--text-black); }
.footer .footer-links a:hover { color:#fff; text-decoration:underline; text-underline-offset:3px; }
.fa-policy-footer { background:var(--bg-dark); }
@media (min-width:1025px) {
  .nav-item { color:var(--text-black); }
  .nav-item:hover,.nav-item.active,.nav-item[aria-current="page"] {
    color:var(--brand-blue-deep); background:#edf5fb;
  }
}
@media (max-width:1024px) {
  .nav-menu { background:#0f172a; }
  .nav-menu .nav-item { color:#fff; }
  .nav-menu .nav-item[aria-current="page"] { color:#a4d1ff; }
}
/* Petits textes : variantes plus profondes pour les fonds clairs. */
.breadcrumb .current-page,.news-date,.flashart-portfolio-editorial > p:first-child { color:var(--brand-blue-deep); }
.breadcrumb .separator { color:var(--text-muted); }
.fa-google-proof-brand small { color:var(--text-muted); }
.flashart-case-kicker { color:var(--brand-blue-deep) !important; }
.fa-privacy-updated { color:var(--text-muted) !important; }
body.offline-page { background:var(--bg-dark); color:#fff; }
.offline-page h1,.offline-page .dot { color:var(--primary-orange); }
.offline-page p { color:#aebed0; }
/* Sur la vidéo d'accueil, la surface claire assure une lecture stable. */
.home-page .hero-copy,.home-page .hero-sidecard { background:rgba(255,255,255,.97); }
.fa-google-proof-link { background:var(--primary-blue); }
.fa-google-proof-link:hover { background:var(--brand-blue-deep); }
.fa-consent-actions .fa-consent-yes { background:var(--primary-blue); border-color:var(--primary-blue); }
.fa-contact-trust a,.fa-policy-content a { color:var(--brand-blue-deep); }

/* Finition sobre : aplats, images intactes et séparations franches au défilement. */
:root { --surface-panel-premium:#fff; --surface-elevated:#fff; }
.premium-orbs,.bento-glow { display:none !important; }
.hero-overlay,.home-page.hero-minimal-view .hero-overlay { background:none !important; }
.home-page .hero-copy,.home-page .hero-sidecard,
.header-content,.header.header--scrolled .header-content,
.info-text-block,.service-item,.agency-page .about-text,
.contact-form-card,.contact-image-box,.info-item,.team-card,
.news-page .page-intro-header,.news-page .news-item,
.projects-page .page-intro-header,.service-detail-header,
.module-col,.deliverable-text,.process-box,.services-page .service-container {
  background:#fff; backdrop-filter:none; -webkit-backdrop-filter:none;
}
.hero-copy,.hero-sidecard,.info-text-block,.service-item,
.agency-page .about-text,.contact-form-card,.info-item,.team-card,
.news-page .news-item,.module-col,.deliverable-text,.process-box {
  box-shadow:0 4px 16px rgba(15,23,42,.04);
}
.hero-sidecard::before,.cta-layout::before,.cta-layout::after,
.services-page .page-intro-header::before,.service-detail-intro::before,
.slide-visual::after,.services-page .service-visual::after,
.bento-card::before,.info-icon::before { content:none !important; }
.btn-secondary::before,.btn-secondary::after,
.btn-secondary-inverse::before,.btn-secondary-inverse::after { content:none; background:none; }
.reviews-section,.service-module-section.light-gray { background:var(--bg-light); }
.cta-layout { background:var(--bg-dark) !important; box-shadow:none !important; }
.info-image-overlay { background:rgba(15,23,42,.9); backdrop-filter:none; -webkit-backdrop-filter:none; }
.bento-card .bento-content { background:var(--bg-dark); padding:18px; border-radius:12px; }
.project-card .project-overlay,.stack-card .project-overlay {
  top:auto !important; bottom:0; height:auto !important;
  background:var(--bg-dark) !important;
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
}
.info-icon { background:#edf5fb; }
.consent-wrapper input[type="checkbox"]:checked + label::before { background:var(--primary-blue); }
.home-page .control-chip:hover,.home-page .control-chip[aria-pressed="true"] { background:var(--brand-blue-deep); }
.section-divider { background:#e2e8f0; }
.footer::before { background:#394860; }
.fa-google-proof-stars { background:none; color:#a86400; -webkit-text-fill-color:currentColor; }
#scroll-progress { background:var(--primary-blue); }
::-webkit-scrollbar-thumb { background:#94a3b8; }
@media (max-width:1024px) {
  .header { background:transparent; }
  .nav-menu { backdrop-filter:none; -webkit-backdrop-filter:none; }
}

/* Le curseur natif est masqué seulement après réception de sa position réelle. */
#cursor-ring,#cursor-dot { display:none !important; }
html.fa-cursor-active,html.fa-cursor-active * { cursor:none !important; }
html.fa-cursor-active #cursor-ring,html.fa-cursor-active #cursor-dot { display:block !important; }
#cursor-ring { border:2px solid #0f172a; background:rgba(255,255,255,.45);
  box-shadow:0 0 0 1px #fff; transition:left 80ms linear,top 80ms linear,width 180ms ease,height 180ms ease,background-color 180ms ease,border-color 180ms ease; }
#cursor-dot { background:#0f172a; border:1px solid #fff; box-shadow:0 0 0 1px rgba(15,23,42,.65); transition:transform 120ms ease,background-color 120ms ease; }
body.cursor-cta #cursor-ring { border-color:var(--primary-orange); background:rgba(246,143,69,.12); }
body.cursor-cta #cursor-dot { background:var(--primary-orange); }
@media (prefers-reduced-motion:reduce) {
  #cursor-ring,#cursor-dot { transition:none !important; }
}

/* Contact : une conversation ouverte, puis des précisions facultatives. */
.contact-page .contact-grid {
  grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);
  grid-template-areas:"intro form" "details form";
  gap:28px clamp(28px,4vw,56px); align-items:start;
}
.contact-page .contact-left { display:contents; }
.contact-intro-block { grid-area:intro; min-width:0; }
.contact-details { grid-area:details; min-width:0; }
.contact-page .contact-right { grid-area:form; max-width:none; }
.contact-intro-block h1 { max-width:12ch; margin:0 0 24px; font-size:clamp(2.25rem,4.6vw,4.4rem); font-weight:800; line-height:1.04; letter-spacing:-.045em; }
.contact-intro-block h1 span { color:var(--primary-blue); }
.contact-intro-block .breadcrumb { margin-bottom:24px; }
.contact-page .contact-intro-text { margin:0; }
.contact-details .contact-info-list { margin-top:0; gap:12px; }
.contact-details .info-item { padding:16px 18px; border-radius:16px; }
.contact-details .info-content { display:flex; flex-direction:column; align-items:flex-start; justify-content:center; gap:4px; }
.contact-details .info-content h2 { font-size:1rem; }
.contact-details .info-content p { margin:0; font-size:.95rem; }
.contact-details .contact-image-box { height:220px; margin-top:24px; }
.contact-page .contact-form-card { padding:clamp(22px,3vw,40px); border-radius:24px; border:1px solid #dbe3eb; box-shadow:none; }
.contact-form-card #contact-form-title { margin:0 0 12px; font-size:clamp(1.6rem,2.4vw,2rem); }
.contact-form-intro { margin:0 0 28px; color:var(--text-muted); font-size:.875rem; line-height:1.6; }
.contact-page .contact-form { gap:24px; }
.contact-page .form-row { align-items:start; gap:16px; }
.contact-page .form-group { gap:8px; }
.contact-page .form-group label { font-size:.9rem; line-height:1.5; }
.contact-page .form-group label small,.contact-needs legend small { font-size:.78rem; font-weight:400; color:var(--text-muted); }
.contact-page .form-input,.contact-page .form-textarea { padding:14px; min-height:52px; border-radius:10px; border-color:#b7c4d2; background:#fff; font-size:16px; }
.contact-page .form-textarea { min-height:160px; line-height:1.6; }
.contact-page .form-input:focus,.contact-page .form-textarea:focus { border-color:var(--primary-blue); box-shadow:0 0 0 3px rgba(28,118,188,.14); }
.contact-extra { border-block:1px solid #dbe3eb; }
.contact-extra summary { min-height:64px; padding:16px 0; display:flex; align-items:center; justify-content:space-between; gap:12px; list-style:none; cursor:pointer; font-size:.9rem; font-weight:700; color:var(--brand-blue-deep); }
.contact-extra summary::-webkit-details-marker { display:none; }
.contact-extra summary small { display:block; margin-top:2px; font-size:.78rem; font-weight:400; color:var(--text-muted); }
.contact-extra-icon { display:grid; place-items:center; flex:0 0 24px; width:24px; height:24px; font-size:0; line-height:1; }
.contact-extra-icon::before { content:"+"; font-size:1.5rem; }
.contact-extra[open] .contact-extra-icon::before { content:"−"; }
.contact-extra-content { display:grid; gap:24px; padding:4px 0 24px; }
.contact-needs { padding:0; margin:0; border:0; min-width:0; }
.contact-needs legend { padding:0; margin-bottom:8px; font-size:.9rem; font-weight:700; }
.contact-needs .field-helper { margin:0 0 12px; color:var(--text-muted); font-size:.85rem; line-height:1.5; }
.contact-need-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.contact-need { display:flex; gap:10px; align-items:center; min-width:0; min-height:52px; padding:12px; border:1px solid #dbe3eb; border-radius:8px; cursor:pointer; color:var(--text-dark-gray); font-size:.85rem; line-height:1.4; }
.contact-need input { flex:0 0 18px; width:18px; height:18px; margin:0; accent-color:var(--primary-blue); }
.contact-need:has(input:checked) { background:#edf5fb; border-color:var(--primary-blue); }
.contact-need:has(input:focus-visible) { outline:3px solid #247aca; outline-offset:3px; }
.contact-page .consent-wrapper { padding-top:0; border:0; }
.contact-page .consent-wrapper label { font-size:.8rem; }
.contact-page .consent-wrapper a { color:var(--brand-blue-deep); text-decoration:underline; text-underline-offset:3px; }
.contact-page .btn-submit-black { min-height:52px; width:100%; margin:0; border-radius:10px; gap:12px; }
@media (max-width:1024px) {
  .contact-page .contact-grid { grid-template-columns:minmax(0,1fr); grid-template-areas:"intro" "form" "details"; gap:28px; }
  .contact-intro-block h1 { max-width:100%; font-size:clamp(2rem,5.8vw,3.5rem); }
  .contact-page .contact-intro-text { max-width:48rem; }
  .contact-details .contact-image-box { display:none; }
}
@media (max-width:600px) {
  .contact-page .contact-form-card { padding:20px 16px; border-radius:18px; }
  .contact-page .contact-form { gap:20px; }
  .contact-page .form-row { grid-template-columns:minmax(0,1fr); gap:16px; }
  .contact-need-grid { grid-template-columns:minmax(0,1fr); }
}
