/**
 * Contact — d314.io v5
 * Page publique | Formulaire + sidebar | Tokens dashboard | Préfixe ct-
 */

/* ============================================================
   FIX ELEMENTOR
   ============================================================ */
body.page-template-page-contact { padding-top:0 !important; }
.ct-page { margin-top:0 !important; }
.elementor,.elementor-section,.elementor-top-section,
.elementor-location-header ~ *,main,#content {
    margin-top:0 !important; padding-top:0 !important;
}

/* ============================================================
   TOKENS
   ============================================================ */
.ct-page {
    --bg0:var(--bg-primary); --bg1:var(--bg-secondary); --bg2:var(--surface-card); --bg3:#212135;
    --b0:var(--border-subtle); --b1:rgba(255,255,255,.03);
    --t0:var(--text-primary); --t1:var(--text-secondary); --t2:var(--text-muted); --t3:var(--text-disabled);
    --math:var(--primary-color); --math-b:var(--primary-light); --math-d:var(--primary-border);
    --cyan:var(--accent-phys); --cyan-b:rgba(34,211,238,.12); --cyan-d:rgba(34,211,238,.3);
    --grn:var(--success-color);  --grn-b:rgba(16,185,129,.12);  --grn-d:rgba(16,185,129,.3);
    --r:10px;
    --sans:var(--font-family-primary);
    --mono:var(--font-family-mono);

    font-family:var(--sans); font-size:var(--font-size-base); color:var(--t0);
    background:var(--bg0); overflow-x:hidden; -webkit-font-smoothing:antialiased;
}

.ct-glow-top {
    position:fixed; top:0; left:0; width:100%; height:600px;
    z-index:0; pointer-events:none;
    background:radial-gradient(ellipse at top,rgba(99,102,241,.10),transparent 60%);
}
.ct-progress-bar {
    position:fixed; top:0; left:0; height:2px; width:0%;
    background:linear-gradient(90deg,var(--math),#22d3ee);
    z-index:1000; transition:width .1s linear; pointer-events:none;
}

/* LAYOUT HELPERS */
.ct-inner { max-width:1100px; margin:0 auto; padding:0 40px; position:relative; z-index:2; }
.ct-slbl {
    font-family:var(--mono); font-size:9.5px; font-weight:var(--font-weight-bold);
    letter-spacing:.12em; text-transform:uppercase; color:var(--t3);
}

/* ANIMATIONS */
@keyframes ct-fadein { from{opacity:0;transform:translateY(20px)} to{opacity:1;transform:translateY(0)} }
.ct-anim     { opacity:0; animation:ct-fadein .7s cubic-bezier(.4,0,.2,1) both; }
.ct-anim--d1 { animation-delay:.1s; }
.ct-anim--d2 { animation-delay:.2s; }
.ct-anim--d3 { animation-delay:.3s; }
.ct-reveal   { opacity:0; transform:translateY(14px); transition:opacity .45s ease,transform .45s ease; }
.ct-reveal.visible { opacity:1; transform:translateY(0); }

/* ============================================================
   HERO
   ============================================================ */
.ct-hero {
    position:relative; z-index:1; text-align:center;
    padding:100px 40px 72px; overflow:hidden;
    border-bottom:1px solid var(--b0);
}
.ct-hero-glow {
    position:absolute; width:600px; height:300px; border-radius:50%;
    background:radial-gradient(circle,#6366f1,transparent 70%);
    top:-160px; left:50%; transform:translateX(-50%);
    opacity:.14; filter:blur(70px); pointer-events:none;
}
.ct-badge {
    display:inline-flex; align-items:center; gap:7px;
    padding:5px 13px 5px 9px;
    background:var(--math-b); border:1px solid var(--math-d);
    border-radius:20px; font-family:var(--mono); font-size:10px;
    font-weight:var(--font-weight-bold); letter-spacing:.08em; text-transform:uppercase;
    color:#a5b4fc; margin-bottom:24px;
}
.ct-badge-dot { width:6px; height:6px; background:var(--math); border-radius:50%; }
.ct-hero-title {
    font-size:clamp(28px,5vw,52px) !important; font-weight:var(--font-weight-extrabold) !important;
    letter-spacing:-.03em !important; line-height:1.1 !important;
    color:var(--t0) !important; margin:0 0 16px !important;
    background:none !important; -webkit-text-fill-color:var(--t0) !important;
}
.ct-hero-sub { font-size:var(--font-size-md); color:var(--t1); line-height:1.65; max-width:520px; margin:0 auto; }

/* ============================================================
   LAYOUT 2 COLONNES
   ============================================================ */
.ct-layout {
    max-width:1100px; margin:0 auto;
    padding:48px 40px 0;
    display:grid; grid-template-columns:1fr 380px;
    gap:32px; align-items:start;
    position:relative; z-index:1;
}

/* ============================================================
   FORMULAIRE
   ============================================================ */
.ct-form-card {
    background:var(--bg2); border:1px solid var(--b0);
    border-radius:var(--r); overflow:hidden;
}
.ct-form-head {
    padding:24px 28px 0;
}
.ct-form-title { font-size:var(--text-medium); font-weight:var(--font-weight-extrabold); color:var(--t0); letter-spacing:-.02em; margin-bottom:4px; }
.ct-form-sub   { font-size:12.5px; color:var(--t1); margin-bottom:24px; }

form#ct-form { padding:0 28px 28px; display:flex; flex-direction:column; gap:16px; }

.ct-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; }

.ct-field { display:flex; flex-direction:column; gap:6px; }
.ct-label { font-family:var(--mono); font-size:10px; font-weight:var(--font-weight-bold); letter-spacing:.08em; text-transform:uppercase; color:var(--t2); }

.ct-input,
.ct-select,
.ct-textarea {
    all:unset; box-sizing:border-box; width:100%;
    padding:11px 14px;
    background:var(--bg3); border:1px solid var(--b0);
    border-radius:8px; color:var(--t0); font-family:var(--sans); font-size:var(--font-size-base);
    transition:border-color .15s, background .15s;
}
.ct-input::placeholder,
.ct-textarea::placeholder { color:var(--t2); }
.ct-input:focus,
.ct-select:focus,
.ct-textarea:focus { outline:none; border-color:var(--math-d); background:rgba(99,102,241,.06); }
.ct-input.valid   { border-color:rgba(16,185,129,.4); }
.ct-input.invalid { border-color:rgba(245,158,11,.4); }

.ct-select { cursor:pointer; }
.ct-select option { background:#17172a; color:var(--t0); }

.ct-textarea { resize:vertical; min-height:140px; line-height:1.6; }

.ct-char-count { font-family:var(--mono); font-size:10px; color:var(--t3); text-align:right; margin-top:4px; }
.ct-char-count.warn   { color:#f59e0b; }
.ct-char-count.danger { color:#f87171; }

.ct-submit {
    all:unset !important; cursor:pointer !important; box-sizing:border-box !important;
    width:100% !important; display:flex !important; align-items:center !important;
    justify-content:center !important; gap:8px !important;
    padding:13px 0 !important; border-radius:9px !important;
    font-family:var(--sans) !important; font-size:var(--font-size-md) !important;
    font-weight:var(--font-weight-bold) !important; color:#fff !important;
    background:linear-gradient(135deg,#6366f1,#4f46e5) !important;
    transition:filter .15s, transform .15s, box-shadow .15s !important;
    margin-top:4px !important;
}
.ct-submit:hover { filter:brightness(1.08) !important; transform:translateY(-2px) !important; box-shadow:0 8px 24px rgba(99,102,241,.35) !important; }
.ct-submit:disabled { opacity:.5 !important; cursor:not-allowed !important; transform:none !important; }

.ct-spinner {
    display:inline-block; width:14px; height:14px;
    border:2px solid rgba(255,255,255,.3);
    border-top-color:#fff; border-radius:50%;
    animation:ct-spin .7s linear infinite;
}
@keyframes ct-spin { to { transform:rotate(360deg); } }

/* STATUS */
.ct-status {
    display:none; margin:0 28px 16px; padding:11px 14px;
    border-radius:8px; font-size:12.5px; font-weight:var(--font-weight-semibold); align-items:center; gap:8px;
}
.ct-status.visible { display:flex; }
.ct-status--ok   { background:var(--grn-b); border:1px solid var(--grn-d); color:#6ee7b7; }
.ct-status--err  { background:rgba(248,113,113,.1); border:1px solid rgba(248,113,113,.3); color:#f87171; }
.ct-status--load { background:var(--math-b); border:1px solid var(--math-d); color:#a5b4fc; }

/* ============================================================
   SIDEBAR
   ============================================================ */
.ct-sidebar { display:flex; flex-direction:column; gap:16px; }

/* INFO CARD */
.ct-info-card {
    background:var(--math-b); border:1px solid var(--math-d);
    border-radius:var(--r); padding:22px;
}
.ct-info-icon {
    width:40px; height:40px; border-radius:10px; margin-bottom:14px;
    display:flex; align-items:center; justify-content:center;
}
.ct-info-icon--indigo { background:rgba(99,102,241,.2); color:var(--math); }
.ct-info-title { font-size:var(--font-size-md); font-weight:var(--font-weight-extrabold); color:var(--t0); margin-bottom:6px; letter-spacing:-.01em; }
.ct-info-desc  { font-size:var(--font-size-sm); color:var(--t1); line-height:1.6; margin-bottom:14px; }
.ct-info-links { display:flex; flex-direction:column; gap:7px; }
.ct-info-link {
    display:flex; align-items:center; gap:7px;
    font-size:var(--font-size-sm); font-weight:var(--font-weight-semibold); color:var(--math);
    text-decoration:none; transition:color .12s, transform .12s;
}
.ct-info-link:hover { color:var(--t0); transform:translateX(3px); }
.ct-info-link--muted { color:var(--t2); cursor:default; }
.ct-info-link--muted:hover { transform:none; color:var(--t2); }

/* SOON CARD */
.ct-soon-card {
    background:var(--bg2); border:1px solid var(--b0);
    border-radius:var(--r); padding:20px;
}
.ct-soon-head { margin-bottom:16px; }
.ct-soon-title { font-size:var(--font-size-base); font-weight:var(--font-weight-extrabold); color:var(--t0); margin-bottom:4px; letter-spacing:-.01em; }
.ct-soon-sub   { font-size:11.5px; color:var(--t2); }
.ct-soon-items { display:flex; flex-direction:column; gap:8px; }
.ct-soon-item  { display:flex; align-items:center; gap:12px; padding:10px; background:var(--bg3); border-radius:8px; border:1px solid var(--b0); transition:border-color .12s; }
.ct-soon-item:hover { border-color:rgba(255,255,255,.09); }
.ct-soon-ico { width:32px; height:32px; border-radius:7px; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.ct-soon-ico--math { background:var(--math-b); color:var(--math); }
.ct-soon-ico--cyan { background:var(--cyan-b);  color:var(--cyan); }
.ct-soon-ico--grn  { background:var(--grn-b);   color:var(--grn);  }
.ct-soon-item-title { font-size:var(--font-size-sm); font-weight:var(--font-weight-bold); color:var(--t0); margin-bottom:2px; }
.ct-soon-item-desc  { font-size:var(--font-size-xs); color:var(--t2); }

/* TIPS CARD */
.ct-tips-card { background:var(--bg2); border:1px solid var(--b0); border-radius:var(--r); padding:20px; }
.ct-tips-title { font-family:var(--mono); font-size:9.5px; font-weight:var(--font-weight-bold); letter-spacing:.1em; text-transform:uppercase; color:var(--t2); margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.ct-tips-title::after { content:''; flex:1; height:1px; background:var(--b1); }
.ct-tips-list { list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:6px; }
.ct-tips-list li { font-size:var(--font-size-sm); color:var(--t1); padding-left:14px; position:relative; line-height:1.5; }
.ct-tips-list li::before { content:''; position:absolute; left:0; top:6px; width:4px; height:4px; border-radius:50%; background:var(--math); }

/* ============================================================
   FAQ SECTION
   ============================================================ */
.ct-faq-wrap {
    position:relative; z-index:1;
    max-width:1100px; margin:40px auto 0;
    padding:0 40px 80px;
}
.ct-faq-head {
    display:flex; align-items:center; justify-content:space-between;
    margin-bottom:20px; padding-bottom:14px; border-bottom:1px solid var(--b0);
}
.ct-faq-list { display:flex; flex-direction:column; gap:8px; }

.ct-faq-item {
    background:var(--bg2); border:1px solid var(--b0);
    border-radius:var(--r); overflow:hidden; transition:border-color .15s;
}
.ct-faq-item:hover { border-color:rgba(255,255,255,.09); }
.ct-faq-item.open  { border-color:var(--math-d); }

.ct-faq-q {
    padding:14px 18px; cursor:pointer;
    display:flex; justify-content:space-between; align-items:center; gap:16px;
    font-size:var(--font-size-base); font-weight:var(--font-weight-bold); color:var(--t0); transition:background .12s;
}
.ct-faq-q:hover { background:rgba(255,255,255,.02); }
.ct-faq-item.open .ct-faq-q { background:rgba(99,102,241,.04); color:var(--math); }

.ct-faq-toggle {
    width:22px; height:22px; border-radius:5px; flex-shrink:0;
    background:var(--math-b); border:1px solid var(--math-d);
    position:relative; transition:background .15s;
}
.ct-faq-toggle::before { content:''; position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:9px; height:1.5px; background:var(--math); border-radius:1px; }
.ct-faq-toggle::after  { content:''; position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:1.5px; height:9px; background:var(--math); border-radius:1px; transition:transform .2s; }
.ct-faq-item.open .ct-faq-toggle { background:var(--math); border-color:var(--math); }
.ct-faq-item.open .ct-faq-toggle::before,.ct-faq-item.open .ct-faq-toggle::after { background:#fff; }
.ct-faq-item.open .ct-faq-toggle::after { transform:translate(-50%,-50%) rotate(90deg); }

.ct-faq-a { max-height:0; overflow:hidden; transition:max-height .3s ease; }
.ct-faq-a.open { max-height:300px; }
.ct-faq-a-inner { padding:0 18px 14px; font-size:12.5px; color:var(--t1); line-height:1.65; border-top:1px solid var(--b0); }

/* ============================================================
   SCROLL TOP
   ============================================================ */
.ct-scroll-top {
    all:unset !important; cursor:pointer !important; box-sizing:border-box !important;
    position:fixed !important; bottom:24px !important; right:24px !important;
    width:36px !important; height:36px !important; border-radius:50% !important;
    background:var(--math) !important; display:flex !important;
    align-items:center !important; justify-content:center !important;
    z-index:999 !important; opacity:0 !important; pointer-events:none !important;
    transition:opacity .3s,transform .2s,box-shadow .2s !important; color:#fff !important;
}
.ct-scroll-top.visible { opacity:.9 !important; pointer-events:auto !important; }
.ct-scroll-top:hover   { opacity:1 !important; transform:translateY(-3px) !important; box-shadow:0 8px 20px rgba(99,102,241,.4) !important; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:900px) {
    .ct-layout   { grid-template-columns:1fr; padding:32px 24px 0; }
    .ct-faq-wrap { padding:32px 24px 60px; }
}
@media (max-width:600px) {
    .ct-hero { padding:80px 20px 56px; }
    .ct-layout,.ct-faq-wrap { padding-left:16px; padding-right:16px; }
    .ct-row  { grid-template-columns:1fr; }
    form#ct-form { padding:0 16px 20px; }
    .ct-form-head { padding:20px 16px 0; }
    .ct-faq-head { flex-direction:column; align-items:flex-start; gap:12px; }
}

/* ============================================================
   PRINT
   ============================================================ */
@media print {
    .ct-glow-top,.ct-progress-bar,.ct-scroll-top { display:none !important; }
    .ct-sidebar { display:none; }
    .ct-layout { grid-template-columns:1fr; }
}