:root{
  --blue:#1f4e9c;--blue2:#2f6fd0;--cyan:#17a6b8;--teal:#0e8a99;--red:#d94b63;
  --bluebg:#e9f1fb;--cyanbg:#e3f6f8;--greenbg:#eefaf0;--green:#1c6b3f;--greenln:#bfe3c8;
  --ink:#152238;--muted:#5b6b82;--line:#dde5ef;--bg:#f4f8fc;--paper:#fff;--warn:#e0a126;
  --shadow:0 1px 3px rgba(20,40,80,.08),0 6px 22px rgba(20,40,80,.06);
}
*{box-sizing:border-box}
body{margin:0;font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.5}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.2}
header.top{position:sticky;top:0;z-index:30;background:linear-gradient(120deg,#fff,#eef6fb 60%,#e3f6f8);border-bottom:1px solid var(--line);box-shadow:var(--shadow)}
.top-in{max-width:1280px;margin:0 auto;display:flex;align-items:center;gap:14px;padding:10px 18px;flex-wrap:wrap}
.brand{font-weight:800;color:var(--blue);font-size:15px}
.brand small{display:block;font-weight:600;color:var(--muted);font-size:11px;letter-spacing:.4px;text-transform:uppercase}
.status{font-size:12px;font-weight:700;padding:4px 9px;border-radius:99px}
.status.ok{background:var(--greenbg);color:var(--green)}
.status.no{background:#fbe7eb;color:#9c2f3f}
.tools{display:flex;gap:6px;flex-wrap:wrap;margin-left:auto}
button.btn{cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:8px;padding:7px 11px;font-size:13px;font-weight:600;transition:.15s}
button.btn:hover{border-color:var(--blue2);color:var(--blue2)}
button.btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}
button.btn.primary:hover{background:var(--blue2)}
button.btn:disabled{opacity:.5;cursor:not-allowed}
button.btn.danger{border-color:#f3c9cf;color:#9c2f3f}
button.btn.danger:hover{border-color:#9c2f3f;background:#9c2f3f;color:#fff}
button.btn.iconbtn{width:36px;padding:7px 0;text-align:center}
button.btn.iconbtn.active{background:var(--blue);border-color:var(--blue);color:#fff}
.layout{max-width:1760px;margin:0 auto;display:grid;grid-template-columns:340px minmax(420px,1fr) minmax(224px,clamp(420px,32vw,680px));gap:20px;padding:18px}
@media(max-width:1180px){.layout{grid-template-columns:minmax(0,1fr) minmax(320px,42vw)}.assistant{grid-column:1 / -1;position:static;max-height:520px}}
@media(max-width:860px){.layout{grid-template-columns:1fr}.rightcol,nav.side{position:static;max-height:none}}
/* assistant */
.assistant{position:sticky;top:74px;align-self:start;max-height:calc(100vh - 92px);display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}
.asst-head{padding:12px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px}
.asst-head b{color:var(--blue)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-left:auto}
.seg button{border:none;background:#fff;padding:5px 10px;font:inherit;font-size:12px;font-weight:700;cursor:pointer;color:var(--muted);border-left:1px solid var(--line)}
.seg button:first-child{border-left:none}
.seg button.on{background:var(--blue);color:#fff}
.chatlog{flex:1;overflow:auto;padding:12px 14px;display:flex;flex-direction:column;gap:9px;min-height:220px}
.msg{padding:9px 12px;border-radius:11px;font-size:13.5px;max-width:92%;white-space:pre-wrap}
.msg.user{align-self:flex-end;background:var(--blue);color:#fff;border-bottom-right-radius:3px}
.msg.ai{align-self:flex-start;background:#f2f6fc;color:var(--ink);border-bottom-left-radius:3px}
.msg.sys{align-self:center;background:var(--cyanbg);color:var(--teal);font-size:12px;font-weight:600}
.qlist{display:flex;flex-direction:column;gap:5px;margin-top:6px}
.qlist div{background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:12.5px}
.asst-in{border-top:1px solid var(--line);padding:10px;display:flex;gap:8px}
.asst-in textarea{flex:1;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit;font-size:13.5px;resize:vertical;min-height:42px}
.apply{align-self:flex-start;margin-top:4px}
/* workspace */
main{min-width:0}
.intro{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:16px 20px;margin-bottom:18px;box-shadow:var(--shadow)}
.intro h2{color:var(--blue);font-size:21px}
.enclair{background:var(--greenbg);border:1px solid var(--greenln);color:var(--green);border-radius:10px;padding:10px 13px;margin:8px 0;font-size:14px}
.sec{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin-bottom:16px;box-shadow:var(--shadow)}
.sec h3{color:var(--blue);font-size:16px;display:flex;align-items:center;gap:8px}
.sec .hint{color:var(--muted);font-size:13px;margin:2px 0 8px}
.modkicker{font-size:11px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--cyan);margin-bottom:2px}
.acthead{background:linear-gradient(120deg,var(--blue),var(--cyan));color:#fff;border-radius:14px;padding:14px 18px;margin:8px 0 14px;box-shadow:var(--shadow)}
.acthead h2{color:#fff;font-size:20px;margin:0}
.acthead-sub{color:#eaf3ff;font-size:13.5px;margin-top:2px}
.howto{font-size:13px;color:#43536e;background:#f6fafe;border-left:3px solid var(--blue2);padding:7px 11px;border-radius:0 8px 8px 0;margin:8px 0}
.howto b{color:var(--blue)}
details.cap{border:1px solid var(--line);border-radius:10px;margin:8px 0;overflow:hidden;background:#fcfdff}
details.cap>summary{cursor:pointer;list-style:none;padding:8px 12px;font-weight:700;font-size:13px;color:var(--blue);background:var(--bluebg)}
details.cap>summary::-webkit-details-marker{display:none}
details.cap>summary::before{content:"▸ "}
details.cap[open]>summary::before{content:"▾ "}
details.cap .capbody{padding:6px 14px 12px;font-size:13.5px;color:#33435c}
.capbody ul{margin:4px 0;padding-left:18px}.capbody li{margin:3px 0}
.calgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:7px;margin-top:6px}
.calcell{border:1px solid var(--line);border-radius:8px;padding:7px 8px;background:#fcfdff;min-height:76px;font-size:11.5px}
.calcell .cc-day{font-weight:800;color:var(--blue);font-size:12px}
.calcell .cc-topic{color:var(--ink);margin:2px 0;line-height:1.3;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.calcell .cc-meta{color:var(--muted);font-size:10.5px}
.calcell .cc-purpose{margin-top:3px;font-weight:700;color:var(--teal);font-size:10.5px}
.calcell.avant{background:#fff7ec}.calcell.jourJ{background:#fde9ec}.calcell.apres{background:#fff3f5}.calcell.repos{background:#fbfdff;color:var(--muted);font-style:italic}
.sec textarea{width:100%;border:1px solid var(--line);border-radius:9px;padding:10px 12px;font:inherit;font-size:14px;resize:vertical;min-height:90px}
.sec input[type=text]{width:100%;border:1px solid var(--line);border-radius:9px;padding:9px 11px;font:inherit;font-size:14px}
.sec input:disabled,.sec textarea:disabled,.sec select:disabled{background:#eef2f7;color:#7f8fa5;border-color:#d7e0eb;cursor:not-allowed}
.sec input[type=text]:disabled,.sec input[type=number]:disabled{background-color:#eef2f7!important}
.field.locked-field .flabel{color:#8796ab}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:620px){.grid2{grid-template-columns:1fr}}
.secact{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.secact button{cursor:pointer;border:1px dashed var(--blue2);background:var(--bluebg);color:var(--blue);border-radius:8px;padding:6px 11px;font-weight:700;font-size:12.5px}
.secact button:hover{background:#dbe8fb}
.spin{display:inline-block;width:13px;height:13px;border:2px solid #ccd;border-top-color:var(--blue);border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
/* pain/dream */
.pd{display:flex;flex-direction:column;gap:7px;margin:8px 0}
.pdrow{display:grid;grid-template-columns:1fr 1fr auto;gap:7px;align-items:start}
.pdrow textarea{min-height:40px}
.pdrow .pain{border-color:#f3c9cf;background:#fff7f8}
.pdrow .dream{border-color:#bfe6eb;background:#f5fdff}
.rm{cursor:pointer;border:none;background:transparent;color:var(--red);font-weight:800;font-size:14px}
/* modal */
.ov{position:fixed;inset:0;background:rgba(15,30,60,.55);display:none;align-items:center;justify-content:center;z-index:60;padding:20px}
.ov.show{display:flex}
.card{background:#fff;border-radius:16px;max-width:980px;width:100%;max-height:90vh;display:flex;flex-direction:column;border-top:6px solid var(--blue);box-shadow:0 24px 70px rgba(10,20,50,.35);overflow:hidden}
.card-h{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--line)}
.card-h h3{color:var(--blue);margin:0}
.card-b{padding:14px 20px;overflow:auto}
.x{cursor:pointer;border:none;background:#eef3fa;border-radius:8px;width:34px;height:34px;font-size:15px;color:var(--muted)}
/* calendar + lists */
.cal{width:100%;border-collapse:collapse;font-size:12.5px}
.cal th,.cal td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top}
.cal thead th{background:var(--blue);color:#fff;position:sticky;top:0}
.cal .jcol{white-space:nowrap;font-weight:700;color:var(--blue)}
.cal .avant td{background:#fff7ec}.cal .jourJ td{background:#fde9ec}.cal .apres td{background:#fff3f5}.cal .repos td{color:var(--muted);font-style:italic;background:#fbfdff}
.iss{border:1px solid var(--line);border-left-width:4px;border-radius:8px;padding:9px 12px;margin:8px 0;font-size:13.5px}
.iss.ok{border-left-color:var(--green)}.iss.info{border-left-color:var(--blue2)}.iss.attention{border-left-color:var(--warn)}.iss.critique{border-left-color:var(--red)}
.iss b{color:var(--blue)}
.iss.ok{border-left-color:var(--green);background:var(--greenbg)}
.iss .fix{color:var(--teal);font-size:12.5px;margin-top:3px}
.act-row{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;padding:8px 11px;margin:6px 0;background:#fcfdff;cursor:pointer}
.act-row input{margin-top:3px;width:16px;height:16px;accent-color:var(--blue)}
.act-row b{color:var(--ink)}
.block{margin:10px 0}
.block h4{color:var(--blue);font-size:14px;margin:0 0 4px}
.block ul{margin:4px 0;padding-left:20px}.block li{margin:3px 0;font-size:13.5px}
.hooks{display:flex;flex-direction:column;gap:6px;margin:6px 0}
.hooks div{background:var(--bluebg);border-radius:8px;padding:7px 10px;font-size:13.5px}
input[type=file]{display:none}
.note{font-size:12px;color:var(--muted);margin-top:6px}
/* dictée vocale */
.mic-wrap{display:flex;gap:6px;align-items:flex-start}
.mic-wrap>textarea,.mic-wrap>input{flex:1;min-width:0}
.asst-in .mic-wrap{flex:1}
.mic-btn{flex:none;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--blue);border-radius:8px;width:38px;height:38px;font-size:16px;line-height:1}
.mic-btn:hover{border-color:var(--blue2)}
.mic-btn.rec{background:var(--red);border-color:var(--red);color:#fff;animation:micpulse 1s infinite}
.mic-btn:disabled{opacity:.4;cursor:not-allowed}
@keyframes micpulse{0%,100%{box-shadow:0 0 0 0 rgba(217,75,99,.45)}50%{box-shadow:0 0 0 6px rgba(217,75,99,0)}}

/* =====================================================================
   Présentation riche portée de la version offline
   (sommaire, cours, schémas, FAQ, cas concret, exemples)
   ===================================================================== */
:root{--good:#1f9d6b}
/* ancrage des sections sous le header collant */
.sec,.acthead,.intro{scroll-margin-top:80px}
/* sommaire (sidebar) + scrollspy */
.rightcol{position:sticky;top:74px;align-self:start;max-height:calc(100vh - 90px);overflow:auto;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
nav.side{width:224px;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;box-shadow:var(--shadow)}
nav.side .grouplabel{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700;margin:12px 8px 4px}
nav.side a{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink);padding:7px 8px;border-radius:8px;font-size:13px}
nav.side a:hover{background:var(--bluebg)}
nav.side a.active{background:var(--blue);color:#fff}
.dot{width:9px;height:9px;border-radius:99px;background:#cdd8e6;flex:none}
nav.side a.active .dot{background:#fff}
.nav-tip{margin:10px 8px 2px;padding:8px 10px;border:1px solid #cfe0f6;background:#f4f8ff;border-radius:9px;color:#43536e;font-size:11.5px;line-height:1.35}
.nav-tip b{display:block;color:var(--blue);font-size:11px;text-transform:uppercase;letter-spacing:.4px;margin-bottom:2px}
.mini-cal{width:100%;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;box-shadow:var(--shadow);min-height:0}
.mini-cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.mini-cal-head b{color:var(--blue);font-size:13px}
.mini-head-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.mini-view-btn{padding:4px 8px!important;font-size:11px!important;border-radius:7px!important}
.mini-seg{margin-left:0;flex:none}
.mini-seg button{font-size:11px;padding:4px 7px}
.mini-cal-meta{font-size:11.5px;color:var(--muted);font-weight:700;margin-bottom:6px}
.mini-cal-body{max-height:44vh;overflow-y:auto;overflow-x:hidden;border:1px solid var(--line);border-radius:8px;background:#fcfdff}
.mini-cal .cal{width:100%;table-layout:fixed;font-size:10px;line-height:1.25}
.mini-cal .cal th,.mini-cal .cal td{padding:3px 4px;overflow:hidden;text-overflow:ellipsis}
.mini-cal .cal th:nth-child(1),.mini-cal .cal td:nth-child(1){width:48px}
.mini-cal .cal th:nth-child(2),.mini-cal .cal td:nth-child(2){width:30px}
.mini-cal .cal th:nth-child(3),.mini-cal .cal td:nth-child(3){width:58px}
.mini-cal .cal th:nth-child(4),.mini-cal .cal td:nth-child(4){width:66px}
.mini-cal .cal th:nth-child(5),.mini-cal .cal td:nth-child(5){width:44px}
.mini-cal .cal th:nth-child(6),.mini-cal .cal td:nth-child(6){width:58px}
.mini-cal .cal th:nth-child(8),.mini-cal .cal td:nth-child(8){width:44px}
.mini-cal .cal td:not(:nth-child(7)){white-space:nowrap}
.mini-cal .cal td:nth-child(7){white-space:normal;word-break:break-word}
.mini-cal .tag-row{display:none}
.mini-cal .cal td.ncol,.mini-cal .cal th:nth-child(1){overflow:visible;text-overflow:clip}
.mini-cal .aud-chip{font-size:10px;padding:0 5px;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.mini-cal .pub-no{font-size:10px;padding:0 5px;max-width:none;overflow:visible;text-overflow:clip;white-space:nowrap}
.mini-cal .mini-drag-h{cursor:grab;user-select:none;touch-action:none}
.mini-cal .mini-drag-h:active{cursor:grabbing}
.mini-cal .mini-drag-item.dragging{opacity:.5}
.mini-cal tr.mini-drag-item.drop-before td{box-shadow:inset 0 3px 0 var(--blue2)}
.mini-cal tr.mini-drag-item.drop-after td{box-shadow:inset 0 -3px 0 var(--blue2)}
.mini-cal .calcell.drop-before{box-shadow:0 -3px 0 var(--blue2)}
.mini-cal .calcell.drop-after{box-shadow:0 3px 0 var(--blue2)}
.mini-cal .topic-cell{cursor:pointer}
.mini-cal .calgrid{grid-template-columns:1fr;gap:5px;margin:6px}
.mini-cal .calcell{min-height:64px;font-size:10.5px;padding:6px}
@media(max-width:860px){.rightcol{align-items:stretch}.mini-cal-body{overflow-x:auto}.mini-cal .cal{min-width:620px}}
/* boutons cours / cas concret */
.modbtns{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 8px}
.coursebtn{flex:none;cursor:pointer;border:2px solid var(--blue);background:#fff;color:var(--blue);font-weight:800;font-size:12px;padding:6px 11px;border-radius:9px;white-space:nowrap;transition:.15s}
.coursebtn::before{content:"📚 "}
.coursebtn:hover{background:var(--blue);color:#fff}
.casebtn::before{content:"📌 "}
.casebtn{border-color:#9a6a12;color:#9a6a12}
.casebtn:hover{background:#9a6a12;color:#fff}
.campbtn::before{content:"📋 "}
.campbtn{border-color:var(--teal);color:var(--teal)}
.campbtn:hover{background:var(--teal);color:#fff}
/* overlay des cours/schémas/cas (indépendant de la modale IA #ov) */
.course-ov{position:fixed;inset:0;background:rgba(15,30,60,.55);display:none;align-items:center;justify-content:center;z-index:200;padding:20px}
.course-ov.show{display:flex}
.course-card{background:#fff;border-radius:16px;max-width:800px;width:100%;max-height:90vh;overflow:hidden;box-shadow:0 24px 70px rgba(10,20,50,.35);display:flex;flex-direction:column;border-top:6px solid var(--blue)}
.cc-head{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 22px 6px;gap:12px}
.cc-kicker{font-size:11px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--cyan)}
.cc-head h3{font-size:20px;color:var(--blue);margin:3px 0 0}
.cc-close{flex:none;cursor:pointer;border:none;background:#eef3fa;border-radius:9px;font-size:15px;width:36px;height:36px;color:var(--muted)}
.cc-close:hover{background:#e0e9f6;color:var(--ink)}
.cc-body{padding:8px 22px 20px}
.cc-essence{background:var(--greenbg);border:1px solid var(--greenln);color:var(--green);border-radius:10px;padding:11px 15px;font-size:14px;margin-bottom:12px}
.cc-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px 20px}
@media(max-width:640px){.cc-grid{grid-template-columns:1fr}}
.cc-point{font-size:13px;color:#33435c;line-height:1.45}
.cc-point b{color:var(--blue)}
.cc-num{color:var(--cyan);font-weight:800;margin-right:3px}
.cc-mind{margin-top:14px;background:#0f2747;color:#eaf2ff;border-radius:11px;padding:12px 16px;font-size:14px}
.cc-mind b{color:#9fd0ff}
.cc-sub{font-weight:800;color:var(--blue);margin:12px 0 4px;font-size:13.5px}
.cc-buckets{gap:5px 18px}
.cc-bk{font-size:12.5px;color:#33435c;line-height:1.4}
.cc-bk b{color:var(--blue)}
.course-card.big{max-width:1040px}
.course-card.big .cc-body{overflow:auto;flex:1;min-height:0}
.course-card.big .onepager{border:none;padding:0;background:none}
/* exemples (collapsible) */
.cap.ex>summary{background:var(--cyanbg);color:var(--teal)}
.ex-h{font-weight:800;color:var(--teal);font-size:12px;text-transform:uppercase;letter-spacing:.4px;margin:8px 0 2px}
.ex-h.ex-case{color:#9a6a12}
/* calendrier du cas concret (semaines / repos / phases de promo) */
.cal .wk td{background:#e6eefb;color:var(--blue);font-weight:800}
.cal .rest td{color:var(--muted);font-style:italic;background:#fbfdff}
.cal .drip td{background:#fff7ec}
.cal .launch td{background:#fde9ec}
.cal .follow td{background:#fff3f5}
.cal-note{font-size:12.5px;color:var(--muted);margin:6px 0}
.ph-drip,.ph-launch,.ph-follow{font-weight:700;padding:0 5px;border-radius:4px}
.ph-drip{background:#fff7ec;color:#9a6a12}
.ph-launch{background:#fde9ec;color:#b3334b}
.ph-follow{background:#fff3f5;color:#b3334b}
/* one-pager + rapport buckets de la campagne Karim */
.onepager{border:2px solid var(--blue);border-radius:12px;padding:18px;background:linear-gradient(180deg,#fff,#f6fbff)}
.onepager h3{color:var(--blue);border-bottom:1px solid var(--line);padding-bottom:6px;margin-top:16px}
.onepager h3:first-child{margin-top:0}
.synthrow{margin:4px 0}
.synthrow b{color:var(--blue)}
.rep-sub{font-weight:800;color:var(--blue);margin:14px 0 4px;font-size:14px}
.brep{width:100%;border-collapse:collapse;font-size:12.5px;margin:6px 0}
.brep th,.brep td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:top}
.brep thead th{background:var(--blue);color:#fff}
.brep .off td{background:#fbfdff;color:#5b6b82}
.brep .tag{font-weight:700;white-space:nowrap;font-size:11px;margin-top:3px}
.brep .tag.y{color:var(--good)}
.brep .tag.n{color:var(--warn)}
.brep .tag.p{color:var(--teal)}
/* FAQ */
.cap.faq{border-color:#cfe0f3}
.cap.faq>summary{background:#eef4fb;color:var(--blue);font-size:14px}
.cap.faq .capbody{font-size:13.5px}
.cap.faq .capbody p{margin:6px 0}
.faq-h{font-weight:800;color:var(--blue);margin:11px 0 3px;font-size:13.5px}
.faq-sub{border:1px solid #cfe0f3;border-radius:10px;margin:13px 0 4px;background:#f6fafe;overflow:hidden}
.faq-sub>summary{cursor:pointer;list-style:none;padding:9px 13px;font-weight:700;font-size:13.5px;color:var(--teal);display:flex;align-items:center;gap:7px}
.faq-sub>summary::-webkit-details-marker{display:none}
.faq-sub>summary::before{content:"↳ ";color:var(--teal);font-weight:800}
.faq-sub>div{padding:2px 14px 12px}
/* schémas de la formation */
.sch{margin:4px 0 16px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.sch:last-child{border-bottom:none}
.sch h4{font-size:15px;color:var(--blue);margin:0 0 2px}
.sch-ex{font-size:13px;color:#33435c;margin:7px 0}
.sch-place{font-size:12.5px;color:var(--teal);background:var(--cyanbg);border-radius:8px;padding:6px 10px;margin-top:4px}
.sch-place b{color:var(--teal)}
.pyr{display:flex;flex-direction:column;align-items:center;gap:3px;margin:10px 0}
.pyr .lvl{color:#fff;text-align:center;padding:6px 8px;border-radius:6px;font-size:12px;font-weight:700}
.flow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0}
.flow .node{background:var(--blue);color:#fff;border-radius:8px;padding:6px 10px;font-size:11.5px;font-weight:700}
.flow .node.alt{background:var(--cyan)}
.flow .arr{color:var(--muted);font-weight:800}
.mtc-t{font-weight:800;font-size:12px;text-transform:uppercase;letter-spacing:.3px;color:#0f2747;margin:8px 0 0}
.mtc{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin:4px 0 8px;font-size:12px}
.mtc .mh{padding:5px 9px;font-weight:800;color:#fff;font-size:11px;text-transform:uppercase}
.mtc .mh.pos{background:var(--blue)} .mtc .mh.neg{background:var(--red)}
.mtc .mc{padding:5px 9px;border-top:1px solid var(--line)}
.mtc .mc.cpos{background:var(--bluebg)} .mtc .mc.cneg{background:#fbe7eb}
.map2{display:grid;grid-template-columns:auto 1fr;gap:3px 10px;margin:8px 0;font-size:12.5px;align-items:center}
.map2 .k{font-weight:800;color:var(--blue);text-align:right;white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}
.chips span{background:var(--bluebg);color:var(--blue);border-radius:6px;padding:4px 9px;font-size:12px;font-weight:600}
/* infobulle (au-dessus de la modale) */
.tip-link{color:var(--blue2);text-decoration:underline;text-underline-offset:2px;cursor:pointer;font-weight:600}
.tip-pop{position:fixed;z-index:300;max-width:360px;background:#fff;border:1px solid var(--line);border-top:4px solid var(--cyan);border-radius:12px;box-shadow:0 16px 50px rgba(10,20,50,.35);padding:12px 30px 12px 14px;display:none;font-size:13px;color:#33435c}
.tip-pop.show{display:block}
.tip-x{position:absolute;top:6px;right:8px;border:none;background:transparent;cursor:pointer;color:var(--muted);font-size:13px}
.tip-title{font-weight:800;color:var(--blue);font-size:13.5px;margin:0 0 6px}
.tip-body p{margin:5px 0}
.tip-body ul{margin:5px 0;padding-left:18px}
.tip-body li{margin:3px 0}
.tip-mind{font-weight:700;color:var(--teal)}

/* =====================================================================
   Moteur de formulaire structuré (T-charts, listes, onglets, dosage…)
   porté de la version offline. `.seg` de l'assistant renommé `.fseg` ici.
   ===================================================================== */
.field{display:block;margin:9px 0}
.field .flabel{display:block;font-weight:600;font-size:13.5px;margin-bottom:4px;color:#2a3a55}
.field .flabel .hint{font-weight:400;color:var(--muted);font-size:12.5px}
.field input[type=text],.field textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 11px;font:inherit;font-size:14px;background:#fff;color:var(--ink)}
.field textarea{resize:vertical;min-height:42px}
.flabel{font-weight:600;font-size:13.5px;color:#2a3a55}
.fseg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;flex-wrap:wrap}
.fseg-btn{border:none;background:#fff;padding:6px 12px;font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;color:var(--muted);border-left:1px solid var(--line)}
.fseg-btn:first-child{border-left:none}
.fseg-btn.on{background:var(--segc,var(--blue));color:#fff}
/* T-charts */
.tchart{border:1px solid var(--line);border-radius:12px;overflow:hidden;margin:10px 0}
.tchart .tc-title{padding:9px 14px;font-weight:800;font-size:14px;letter-spacing:.3px;background:#0f2747;color:#fff;text-transform:uppercase}
.tc-heads{display:grid;grid-template-columns:1fr 1fr}
.tc-heads div{padding:8px 14px;font-weight:800;font-size:13px;text-transform:uppercase;letter-spacing:.4px}
.tc-h-pos{background:var(--blue);color:#fff}.tc-h-neg{background:var(--red);color:#fff}
.tc-rows{display:flex;flex-direction:column}
.tc-row{display:grid;grid-template-columns:1fr 1fr;gap:0}
.tc-row .cell{padding:6px;border-top:1px solid var(--line)}
.tc-row .cell:first-child{background:var(--bluebg)}.tc-row .cell:last-child{background:#fbe7eb}
.tc-row .cell .mic-wrap{gap:4px}
.tc-row input{border:1px solid transparent;background:transparent;width:100%;border-radius:6px;padding:6px 8px;font:inherit;font-size:13.5px}
.tc-row input:focus{background:#fff;border-color:var(--blue2);outline:none}
.tc-row.used{box-shadow:inset 3px 0 0 #cfe0f6}
.tc-use{grid-column:1 / -1;font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.35px;padding:0 8px 6px;background:#f6f9fd}
.tc-foot{display:flex;justify-content:space-between;padding:6px 10px;background:#fafcff;border-top:1px solid var(--line)}
.single-col .tc-heads{grid-template-columns:1fr}.single-col .tc-row{grid-template-columns:1fr}
/* listes répétables */
.replist{display:flex;flex-direction:column;gap:10px;margin:10px 0}
.repitem{border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fcfdff;position:relative}
.repitem .rm-top{position:absolute;top:6px;right:8px}
button.add{align-self:flex-start;cursor:pointer;border:1px dashed var(--blue2);background:var(--bluebg);color:var(--blue);border-radius:8px;padding:8px 13px;font-weight:700;font-size:13px}
button.add:hover{background:#dbe8fb}
/* onglets de profils */
.ptabs{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin:6px 0 14px;border-bottom:2px solid var(--line);padding-bottom:8px}
.ptab{cursor:pointer;border:1px solid var(--line);border-bottom:none;background:#f3f7fc;padding:7px 13px;border-radius:9px 9px 0 0;font-weight:700;font-size:13px;color:var(--muted)}
.ptab.on{background:var(--blue);color:#fff;border-color:var(--blue)}
.ptab .x{margin-left:7px;opacity:.7}
.pname{display:flex;align-items:center;gap:8px;margin:2px 0 12px;flex-wrap:wrap}.pname input{max-width:340px;border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit}
.pname select,.field select{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit;font-size:14px;background:#fff;width:100%}
.pill{display:inline-block;font-size:11px;font-weight:700;background:var(--cyanbg);color:var(--teal);padding:2px 8px;border-radius:99px;margin-left:6px}
.callout{border-radius:10px;padding:11px 14px;margin:10px 0;font-size:14px}
.callout.rule{background:#fff5f5;border:1px solid #f3c9cf;color:#9c2f3f}
.callout.tip{background:var(--cyanbg);border:1px solid #bfe6eb;color:var(--teal)}
.arche{font-size:13.5px;margin:4px 0;padding-left:4px}
.arche b{color:var(--blue)}
.arche.good b{color:var(--good)}
/* cases à cocher */
.checks{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.chk{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;padding:7px 11px;font-size:13px;cursor:pointer;background:#fff;user-select:none}
.chk input{width:16px;height:16px;accent-color:var(--blue)}
.chk.on{border-color:var(--blue2);background:var(--bluebg);color:var(--blue);font-weight:600}
/* mini-tableau créneaux + routine mensuelle */
.minitable{width:100%;border-collapse:collapse;margin:8px 0;font-size:13px}
.minitable th,.minitable td{border:1px solid var(--line);padding:5px 7px;text-align:left}
.minitable th{background:var(--bluebg);color:var(--blue)}
.minitable input{width:100%;border:1px solid var(--line);border-radius:6px;padding:5px 7px;font:inherit}
.openslot{font-weight:800;color:var(--teal)}
.machine-step{border:1px solid var(--line);border-radius:11px;padding:12px 14px;margin:10px 0;background:#fcfdff}
.machine-step h4{font-size:15px;color:var(--blue)}
.map{font-size:13px;color:var(--muted);background:#f6fafe;border:1px dashed var(--line);border-radius:10px;padding:12px 14px;margin:10px 0}
.map b{color:var(--blue)}
.subhead{font-size:15px;color:var(--blue);margin:16px 0 4px;font-weight:800}
/* Barre de progression (header) + points du sommaire + bouton schémas intro */
.progwrap{flex:1;min-width:150px;display:flex;align-items:center;gap:10px}
.progbar{flex:1;height:9px;background:#dfeaf6;border-radius:99px;overflow:hidden}
.progfill{height:100%;width:0;background:linear-gradient(90deg,var(--cyan),var(--blue2));transition:width .35s}
.progpct{font-weight:700;font-size:13px;color:var(--blue);min-width:40px;text-align:right}
.dot.on{background:var(--cyan)}
.schbtn-wrap{text-align:center;margin:16px 0 2px}
.schbtn{font-size:14px;padding:11px 20px}
/* indicateur « l'IA réfléchit » (points animés) */
.msg.typing{display:inline-flex;gap:5px;align-items:center;padding:12px 14px}
.msg.typing .td{width:7px;height:7px;border-radius:50%;background:var(--blue2);opacity:.35;animation:tdblink 1.2s infinite}
.msg.typing .td:nth-child(2){animation-delay:.2s}
.msg.typing .td:nth-child(3){animation-delay:.4s}
@keyframes tdblink{0%,60%,100%{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}
/* aperçu avant/après des Magic Fill */
.prev-group{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:8px 0;background:#fcfdff}
.prev-head{display:flex;gap:8px;align-items:center;cursor:pointer;margin-bottom:6px}
.prev-head input{width:16px;height:16px;accent-color:var(--blue)}
.prev-head b{color:var(--blue)}
.prev-cols{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:600px){.prev-cols{grid-template-columns:1fr}}
.prev-col{border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:13px;overflow:auto}
.prev-col.before{background:#fbfdff}
.prev-col.after{background:var(--greenbg);border-color:var(--greenln)}
.prev-t{font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;font-weight:800;color:var(--muted);margin-bottom:3px}
.prev-col.after .prev-t{color:var(--green)}
.prev-line{margin:2px 0;line-height:1.35}
/* calendrier multi-profils : puces d'audience, légende, contrôles */
.aud-chip{display:inline-block;border:1px solid;border-radius:99px;padding:1px 8px;font-size:11px;font-weight:700;white-space:nowrap;line-height:1.5}
.aud-legend{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 10px}
.cal-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px}
.cal-controls select{border:1px solid var(--line);border-radius:8px;padding:6px 9px;font:inherit;font-size:13px;background:#fff}
.calcell .aud-chip{font-size:9.5px;padding:0 6px;margin:2px 0}

/* Carte stratégique de l'IA (modale 🧭) */
.map-node{position:relative;border:1px solid var(--line);border-radius:8px;padding:7px 34px 7px 10px;margin:5px 0;background:#fff}
.map-node b{font-size:13.5px}
.map-node .hint{margin-top:2px}
.map-chip{display:inline-block;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;padding:1px 8px;border-radius:99px;background:#eef2fb;color:var(--blue);margin-right:7px;vertical-align:1px}
.map-x{position:absolute;top:6px;right:6px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;font-size:11px;line-height:1;padding:3px 6px;color:#9c2f3f}
.map-x:hover{background:#9c2f3f;border-color:#9c2f3f;color:#fff}
.map-edge{font-size:13px;padding:3px 0;border-bottom:1px dashed var(--line)}
.map-edge:last-child{border-bottom:none}

/* Calendrier : numérotation, étiquettes-filtres cliquables, édition d'une publication */
.pub-no{display:inline-block;font-weight:800;font-size:11px;color:var(--blue);background:#eaf1fc;border:1px solid #c9d9f2;border-radius:6px;padding:0 6px;line-height:1.5}
.pub-no.off{color:var(--muted);background:transparent;border-color:transparent}
.cal td.ncol{white-space:nowrap;text-align:center}
.aud-chip.togglable{cursor:pointer;user-select:none;transition:opacity .12s,filter .12s}
.aud-chip.togglable:hover{filter:brightness(.92)}
.aud-chip.off{opacity:.3;filter:grayscale(.7);text-decoration:line-through}
.cal td.topic-cell{cursor:pointer}
.cal td.topic-cell:hover{background:#eef5ff;box-shadow:inset 0 0 0 1px #bcd4f5}
.cal td.type-cell{cursor:pointer;font-weight:700;color:var(--blue)}
.cal td.type-cell:hover{background:#eef5ff;box-shadow:inset 0 0 0 1px #bcd4f5}
.calcell.editable{cursor:pointer;transition:box-shadow .12s}
.calcell.editable:hover{box-shadow:0 0 0 2px #bcd4f5}
#dayov .card.dayedit{max-width:min(820px,calc(100vw - 28px))}
.why-box{margin-top:8px;font-size:13px;background:#f2f9f4;border:1px solid #cde8d6;border-radius:8px;padding:8px 10px;color:#1e6b3a}

/* Calendrier : colonne date et date des cartes */
.cal td.dcol{white-space:nowrap;font-weight:700;color:#0e6b8a}
.cc-date{font-size:10.5px;font-weight:700;color:#0e6b8a;margin:1px 0 2px}

/* Étiquettes de publication + checklist de vérification */
.tag-row{display:flex;flex-wrap:wrap;gap:3px;margin-top:4px}
.tag-chip{display:inline-block;border:1px solid;border-radius:99px;padding:0 7px;font-size:10px;font-weight:700;white-space:nowrap;line-height:1.6}
.chkpanel{border:1px solid var(--line);border-radius:10px;background:#fcfdff;padding:8px 10px;margin-bottom:10px}
.chk-title{font-weight:800;font-size:12.5px;color:var(--blue);margin-bottom:5px}
.chk-item{display:flex;gap:7px;align-items:flex-start;padding:4px 6px;border-radius:7px;font-size:12.5px;cursor:pointer;line-height:1.4}
.chk-item:hover{background:#eef5ff}
.chk-item.ok{color:#1c6b3f}
.chk-item.ko{color:#9c2f3f;font-weight:600}
.chk-item.pend{color:#9c6a12}
.chk-ic{flex:0 0 auto}

/* ===== Campagne mécanique (Étapes 6-9 verrouillables + blocs de publication) ===== */
.lockbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:2px 0 12px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fafcff}
.lockbar.is-locked{background:var(--greenbg);border-color:var(--greenln)}
.lock-state{font-weight:800;color:var(--green)}
.gate-msg{color:#9c6a12;font-weight:600;font-size:13px}
.gate-msg.big{display:block;padding:16px;background:#fff8ec;border:1px dashed #e0b866;border-radius:10px;text-align:center}
.captable .qty,.minitable input[type=number]{width:90px;text-align:center}
.minitable input:disabled{background:#eef1f5;color:#8595ab}
.minitable.locked-table{opacity:.68;filter:grayscale(.25);pointer-events:none}
.minitable .opsqty{background:#fffdf5;border-color:#e8d69b}
.minitable .totrow td{border-top:2px solid var(--line);background:#f6f9fd}
.minitable tr.neg .openslot{color:#9c2f3f;font-weight:800}
.minitable .openslot{font-weight:800;color:var(--blue);text-align:center}
/* blocs de publication */
.publist{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.pubcard{border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:#fff;box-shadow:var(--shadow);position:relative}
.pubcard.op{border-color:#e2b3c4;background:#fdf6f8}
.pubcard.dragging{opacity:.5}
.pubcard.drop-before{box-shadow:0 -3px 0 var(--blue2)}
.pubcard.drop-after{box-shadow:0 3px 0 var(--blue2)}
.pubcard.scroll-focus{animation:pubfocus 1.4s ease}
@keyframes pubfocus{0%,100%{box-shadow:var(--shadow)}25%,70%{box-shadow:0 0 0 3px rgba(47,111,208,.28),var(--shadow);border-color:var(--blue2)}}
.pubcard-h{display:flex;align-items:center;gap:9px;margin-bottom:8px;flex-wrap:wrap}
.drag-h{cursor:grab;color:var(--muted);font-size:17px;line-height:1;user-select:none;touch-action:none;padding:0 2px}
.drag-h:active{cursor:grabbing}
.pubcard-date{font-size:13px;font-weight:700;color:#0e6b8a}
.pubcard-phase{font-size:10.5px;font-weight:800;letter-spacing:.4px;color:#fff;background:#c0497a;border-radius:99px;padding:1px 8px}
.pubcard .field{margin:0}
.magic-fill-row{display:flex;justify-content:flex-start;margin-top:6px}
.magic-fill-btn{font-size:12px!important;padding:5px 9px!important}
.pubsel{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 9px;font:inherit;font-size:14px;background:#fff}
.pubsel:disabled{background:#eef1f5;color:#8595ab}
.audience-field{min-width:0}
.aud-pick-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}
.aud-pick{cursor:pointer;border:1px solid;border-radius:999px;padding:5px 10px;font:inherit;font-size:12.5px;font-weight:900;line-height:1.2;white-space:normal;text-align:left;max-width:100%}
.aud-pick:hover{filter:brightness(.94)}
.aud-pick.on{box-shadow:0 0 0 2px rgba(31,78,156,.12)}
.aud-pick:disabled,.aud-pick.disabled{cursor:default;opacity:.72;filter:grayscale(.08)}
.tageditor{border-top:1px dashed var(--line);margin-top:8px;padding-top:8px}
.tagline{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.tagcat{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}
.tagpick-group{margin:8px 0}
.tagpick-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}
.tagpick{cursor:pointer;border:1px solid;border-radius:99px;padding:4px 10px;font:inherit;font-size:12.5px;font-weight:800;line-height:1.2;white-space:normal;text-align:left;max-width:100%}
.tagpick:hover{filter:brightness(.94)}
.tagpick.on{box-shadow:0 0 0 2px rgba(31,78,156,.12)}
.tgl{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:99px;padding:4px 11px;font:inherit;font-size:12.5px;font-weight:700;color:var(--muted)}
.tgl:hover{border-color:var(--blue2);color:var(--blue2)}
.tgl.on{background:var(--blue);border-color:var(--blue);color:#fff}
.tgl.op.on{background:#c0497a;border-color:#c0497a}
.tag-selrow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tag-selrow.three{grid-template-columns:1fr 1fr 1fr}
@media(max-width:640px){.tag-selrow,.tag-selrow.three{grid-template-columns:1fr}}
.angle-list .angle-pair{position:relative}
.angle-pair.used,.angle-choice.used{background:#f6f9fd;opacity:.72}
.angle-pair.used{box-shadow:inset 3px 0 0 #cfe0f6}
.angle-status{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.35px;margin-bottom:5px}
.pub-angle{border:1px dashed var(--line);border-radius:9px;padding:8px 10px;margin:8px 0;background:#fcfdff}
.angle-current{font-size:13px;color:#33435c;margin:4px 0 7px;white-space:pre-wrap}
.angle-current.empty{color:var(--muted);font-style:italic}
.source-pill{display:block;border:1px solid var(--line);border-radius:8px;background:#fff;padding:5px 7px;margin:4px 0;font-size:12.5px}
.angle-evolution{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:7px;margin:5px 0 8px}
.angle-side{display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:8px;padding:7px 8px;min-width:0;background:#fff}
.angle-side small{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.35px;color:#fff;border-radius:5px;padding:2px 5px;align-self:flex-start}
.angle-side b{font-size:12.5px;line-height:1.28;color:var(--ink);white-space:normal;word-break:break-word}
.angle-low{background:#fff7ec}
.angle-low small{background:#9a6a12}
.angle-high{background:#eefbf6}
.angle-high small{background:#2f9e6f}
.angle-arrow{align-self:center;font-weight:900;color:var(--blue);background:#eef5ff;border:1px solid #cfe0f6;border-radius:999px;width:28px;height:28px;display:grid;place-items:center}
.pub-tchart-ref{border:1px solid var(--line);border-radius:9px;background:#fff;margin:6px 0;padding:7px}
.pub-tchart-ref-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.source-parent-chip{display:inline-block;border:1px solid;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:900;line-height:1.25;white-space:normal}
.pub-tchart-ref-title{font-size:11px;font-weight:900;color:var(--muted);text-transform:uppercase;text-align:right;line-height:1.2}
.pub-source-tchart{margin:0}
.linked-context{border:1px solid var(--line);border-radius:11px;background:#fbfdff;padding:10px 12px;margin:10px 0}
.linked-context h4{margin:0 0 5px;color:var(--blue);font-size:14px}
.linked-context-section{margin-top:9px}
.linked-context .angle-evolution,.linked-context .pub-tchart-ref{margin-bottom:0}
.linked-context-sources{display:flex;flex-direction:column;gap:7px}
.linked-context-tags{display:flex;align-items:center;flex-wrap:wrap;gap:5px}
.linked-context-tags .tag-row{margin-top:0}
.context-bucket-chip{display:inline-block;border:1px solid #c9d9f2;border-radius:999px;background:#eef5ff;color:var(--blue);padding:1px 8px;font-size:10.5px;font-weight:900;line-height:1.6;white-space:normal}
.angle-actions{display:flex;gap:7px;flex-wrap:wrap}
.angle-chooser{display:flex;flex-direction:column;gap:7px}
.source-profile-bar{border:1px solid var(--line);border-radius:10px;background:#fbfdff;padding:8px 10px}
.source-profile-bar .flabel{margin-bottom:5px}
.source-profile-filters{margin:0}
.source-folder{border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}
.source-folder[open]{box-shadow:0 4px 12px rgba(23,42,69,.06)}
.source-folder summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;background:#f8fbff;font-weight:800;color:var(--blue)}
.source-folder summary::-webkit-details-marker{display:none}
.source-folder summary:before{content:"▸";color:var(--muted);font-size:12px;transition:transform .15s}
.source-folder[open] summary:before{transform:rotate(90deg)}
.source-folder-title{flex:1}
.source-folder-meta{font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.25px}
.source-folder-body{display:flex;flex-direction:column;gap:7px;padding:8px;background:#fcfdff;border-top:1px solid var(--line)}
.source-chart-folder{border:1px solid #d7e2f0;border-radius:9px;background:#fff;overflow:hidden}
.source-chart-folder[open]{box-shadow:0 2px 8px rgba(23,42,69,.05)}
.source-chart-folder summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;background:#eef4fb;color:#0f2747;font-weight:800}
.source-chart-folder summary::-webkit-details-marker{display:none}
.source-chart-folder summary:before{content:"▸";color:var(--muted);font-size:11px;transition:transform .15s}
.source-chart-folder[open] summary:before{transform:rotate(90deg)}
.source-chart-title{flex:1;font-size:12.5px}
.source-chart-body{display:flex;flex-direction:column;gap:7px;padding:8px;border-top:1px solid var(--line);background:#fff}
.angle-choice{cursor:pointer;text-align:left;border:1px solid var(--line);background:#fff;border-radius:9px;padding:9px 11px;color:var(--ink);font:inherit}
.angle-choice:hover{border-color:var(--blue2);box-shadow:0 0 0 2px #d8e8ff}
.angle-choice.selected{border-color:var(--blue2);background:#eef5ff}
.angle-choice-main{display:block;font-weight:700;color:var(--blue)}
.source-tchart{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin:6px 0 2px}
.source-tchart.single{grid-template-columns:1fr}
.source-side{display:flex;flex-direction:column;gap:3px;padding:7px 8px;min-width:0}
.source-side small{font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.35px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.source-side b{font-size:12.5px;line-height:1.25;color:var(--ink);white-space:normal;word-break:break-word}
.source-pos{background:var(--bluebg);border-right:1px solid var(--line)}
.source-pos small{background:var(--blue);border-radius:5px;padding:2px 5px;align-self:flex-start}
.source-neg{background:#fbe7eb}
.source-neg small{background:var(--red);border-radius:5px;padding:2px 5px;align-self:flex-start}
.angle-choice-meta{display:block;margin-top:3px;font-size:11.5px;color:var(--muted);font-weight:700}
@media(max-width:640px){
  .angle-evolution{grid-template-columns:1fr;gap:6px}
  .angle-arrow{width:28px;height:24px;justify-self:center;transform:rotate(90deg)}
  .pub-tchart-ref-head{align-items:flex-start;flex-direction:column}
  .pub-tchart-ref-title{text-align:left}
}
