/* ============================================================
   RATE TERMINAL  —  Bloomberg-style theme
   amber/orange on black, monospace, dense data grid
   ============================================================ */
:root{
  --bg:#000000;
  --panel:#0a0a0a;
  --panel2:#0d0f12;
  --grid:#1b1b1b;
  --amber:#ff9d00;       /* primary Bloomberg orange */
  --amber-dim:#a86700;
  --white:#e6e6e6;
  --muted:#7d7d7d;
  --green:#39ff7a;       /* up / hike */
  --red:#ff3b3b;         /* down / cut */
  --cyan:#33d6ff;
  --yellow:#ffe14d;
  --blue:#5b8cff;
  --line-cur:#ff9d00;
  --line-1w:#33d6ff;
  --line-3w:#39ff7a;
  --line-6w:#b07cff;
  --line-10w:#ff5fa2;
}

/* ---- light theme ---- */
:root[data-theme="light"]{
  --bg:#f4f1ea;
  --panel:#fbfaf6;
  --panel2:#ffffff;
  --grid:#d9d4c7;
  --amber:#b35c00;
  --amber-dim:#c98a2e;
  --white:#1c1a16;
  --muted:#7a7468;
  --green:#0a8a3a;
  --red:#cc2a2a;
  --cyan:#0a7fa6;
  --line-cur:#b35c00;
  --line-1w:#0a7fa6;
  --line-3w:#0a8a3a;
  --line-6w:#7a3fd0;
  --line-10w:#c43c7a;
}
:root[data-theme="light"] body{text-shadow:none}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:var(--bg);
  color:var(--amber);
  font-family:"Roboto Mono","DejaVu Sans Mono","SF Mono",Menlo,Consolas,monospace;
  font-size:13px;
  line-height:1.35;
  -webkit-font-smoothing:antialiased;
  text-shadow:0 0 1px rgba(255,157,0,.15);
}
::selection{background:var(--amber);color:#000}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:#060606}
::-webkit-scrollbar-thumb{background:#2a2a2a;border:1px solid #000}
::-webkit-scrollbar-thumb:hover{background:var(--amber-dim)}

/* ---- command bar ---- */
.cmdbar{
  display:flex;align-items:center;gap:10px;
  background:#070707;border-bottom:1px solid var(--amber-dim);
  padding:5px 10px;position:sticky;top:0;z-index:20;
}
.cmdbar .brand{display:inline-flex;align-items:center;gap:6px;color:#000;background:var(--amber);font-weight:700;
  padding:1px 8px 1px 4px;letter-spacing:1px;border:none;font-family:inherit;font-size:inherit;cursor:pointer}
.cmdbar .brand:hover{filter:brightness(1.08)}
.cmdbar .brand .brandlogo{width:16px;height:16px;border-radius:2px;display:block}
.cmdbar .cmdline{flex:1;color:var(--white);white-space:nowrap;overflow:hidden}
.cmdbar .cmdline .gt{color:var(--amber)}
.cmdbar .cur{display:inline-block;width:8px;height:14px;background:var(--amber);
  vertical-align:-2px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.cmdbar .cbtn{
  background:transparent;border:1px solid var(--amber-dim);color:var(--amber);
  font-family:inherit;font-size:11px;letter-spacing:.6px;cursor:pointer;
  padding:2px 9px;white-space:nowrap;
}
.cmdbar .cbtn:hover{background:var(--amber);color:#000}
.cmdbar .clock{color:var(--cyan)}
.cmdbar .live{color:#000;background:var(--green);padding:1px 7px;font-weight:700;letter-spacing:1px}
.cmdbar .live.stale{background:var(--red)}

/* ---- function-key tabs ---- */
.fkeys{display:flex;gap:0;background:#050505;border-bottom:1px solid var(--grid);flex-wrap:wrap}
.fkey{
  border:none;background:transparent;color:var(--muted);
  font-family:inherit;font-size:12.5px;cursor:pointer;
  padding:7px 14px;border-right:1px solid var(--grid);
  display:flex;gap:7px;align-items:baseline;letter-spacing:.3px;
}
.fkey:hover{color:var(--white);background:#101010}
.fkey .fn{color:var(--amber-dim);font-size:10.5px}
.fkey.active{background:var(--amber);color:#000}
.fkey.active .fn{color:#3a2600}

/* ---- journal create form ---- */
.jform{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:9px}
.jfield.wide{grid-column:1/-1}
.jfield label{display:block;color:var(--muted);font-size:10px;letter-spacing:.4px;text-transform:uppercase;margin-bottom:3px}
.jfield input,.jfield select{width:100%;background:#0c0c0c;border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:12.5px;padding:6px 8px;outline:none}
.jfield input:focus,.jfield select:focus{border-color:var(--amber-dim)}
.jfcheck{display:flex;align-items:center;gap:6px;color:var(--white);font-size:12.5px;padding:5px 0}
.jfmulti{display:flex;flex-wrap:wrap;gap:5px}
.jfchip{background:#0c0c0c;border:1px solid var(--grid);color:var(--muted);font-family:inherit;
  font-size:11px;padding:3px 9px;cursor:pointer}
.jfchip:hover{color:var(--white)}
.jfchip.on{background:var(--amber);border-color:var(--amber);color:#000;font-weight:700}
.jsave{background:var(--green);color:#000;font-weight:700;padding:8px 16px;border-color:var(--green)}
#jadd{padding:2px 9px;margin-right:4px}
/* lignes de trade cliquables */
tr.jrow{cursor:pointer}
tr.jrow:hover td{background:#151310}
tr.jrow.on td{background:#1d1a12;box-shadow:inset 2px 0 0 var(--amber)}
tr.jrow.sel td{background:#241a12}
.jselcol{width:30px;text-align:center;padding-left:8px!important;padding-right:0!important}
.jselcol input{cursor:pointer;accent-color:var(--amber);width:14px;height:14px;vertical-align:middle}
.jdel{background:var(--down);border-color:var(--down);color:#000;font-weight:700;margin-right:4px}
/* panneau détail d'un trade */
.jdetail{border-color:var(--amber-dim)}
.jdoc{padding:12px 14px;line-height:1.6;color:var(--white);font-size:13px;max-width:780px}
.jbh{font-weight:700;letter-spacing:.3px;margin:12px 0 5px}
.jbh1{color:var(--amber);font-size:15px;text-transform:uppercase}
.jbh2{color:var(--amber-dim);font-size:13.5px}
.jbh3{color:var(--white);font-size:12.5px}
.jbp{margin:6px 0}
.jbspace{height:7px}
.jbli{margin:3px 0 3px 4px}
.jbq{margin:8px 0;padding:4px 12px;border-left:3px solid var(--amber-dim);color:var(--muted)}
.jbcall{margin:8px 0;padding:8px 11px;background:#141414;border:1px solid var(--grid)}
.jbcode{margin:8px 0;padding:9px 11px;background:#0a0a0a;border:1px solid var(--grid);overflow:auto;font-size:12px}
.jbhr{border:0;border-top:1px solid var(--grid);margin:11px 0}
.jbfig{margin:10px 0}
.jbimg{max-width:100%;border:1px solid var(--grid);display:block}
.jbfig figcaption{color:var(--muted);font-size:11px;margin-top:3px}
/* composer texte + photos */
.jcompose{padding:12px 14px;border-top:1px solid var(--grid);margin-top:6px;position:relative;border-radius:2px}
.jcompose.drag{outline:2px dashed var(--amber);outline-offset:-4px;background:#181410}
.jcompose.drag::after{content:"⤓ Déposez vos captures ici";position:absolute;inset:0;display:flex;
  align-items:center;justify-content:center;color:var(--amber);font-size:13px;font-weight:700;
  background:rgba(10,8,4,.55);pointer-events:none;z-index:2}
.jcompose textarea{width:100%;min-height:62px;background:#0c0c0c;border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:12.5px;padding:8px;outline:none;resize:vertical}
.jcompose textarea:focus{border-color:var(--amber-dim)}
.jcimgs{display:flex;flex-wrap:wrap;gap:7px;margin:7px 0}
.jcthumb{position:relative;display:inline-block}
.jcthumb img{height:62px;border:1px solid var(--grid);display:block}
.jcthumb button{position:absolute;top:-7px;right:-7px;width:18px;height:18px;border-radius:50%;border:1px solid var(--grid);
  background:#000;color:var(--down);cursor:pointer;font-size:11px;line-height:1;padding:0}
.jcbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:7px}
.jpicklbl{cursor:pointer}
/* IA — bibliothèque de prompts */
.promptgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px;margin-top:12px}
.promptcard{background:var(--panel,#0c0c0c);border:1px solid var(--grid);display:flex;flex-direction:column;height:380px}
.pchead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 11px;border-bottom:1px solid var(--grid)}
.pctitle{color:var(--amber);font-weight:700;font-size:13px}
.pctag{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.4px;border:1px solid var(--grid);padding:1px 6px;white-space:nowrap}
.pcuse{color:var(--cyan);font-size:11px;padding:8px 11px 0;line-height:1.45}
.pctext{margin:8px 11px;padding:9px 10px;background:#070707;border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:11.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word;
  flex:1 1 0;min-height:0;overflow:auto}
.pcbar{padding:0 11px 11px}
.pccopy{background:var(--amber);color:#000;border-color:var(--amber);font-weight:700;padding:6px 12px;width:100%}
.pccopy:hover{filter:brightness(1.08)}
.jformnote{border:1px solid var(--grid);border-top:1px solid var(--grid);margin-top:12px;padding:11px 12px}
.jflabel{display:block;color:var(--muted);font-size:10px;letter-spacing:.4px;text-transform:uppercase;margin-bottom:6px}

/* ---- position calculator ---- */
.calcgrid{display:grid;gap:14px}
@media(min-width:780px){.calcgrid{grid-template-columns:1fr 1fr}}
.calcform{display:flex;flex-direction:column;gap:9px}
.cfield label{display:block;color:var(--muted);font-size:10.5px;letter-spacing:.4px;text-transform:uppercase;margin-bottom:3px}
.cfield input,.cfield select{width:100%;background:#0c0c0c;border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:13px;padding:7px 9px;outline:none}
.cfield input:focus,.cfield select:focus{border-color:var(--amber-dim)}
.crisk{display:flex;gap:6px}
.crisk input{flex:1}
.crisk select{flex:0 0 auto;width:auto}
.calcres{align-self:start}
.calcbig{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--grid);margin-bottom:9px}
.calcb{background:var(--panel2);padding:10px 12px}
.calcb .k{color:var(--muted);font-size:10px;letter-spacing:.5px}
.calcb .v{font-size:26px;font-weight:700;color:var(--white);margin-top:3px}
.calcb .v small{font-size:13px;color:var(--muted);font-weight:400}
.calcb.amber .v{color:var(--amber)}
table.calctab td{padding:6px 8px;font-size:12.5px}
table.calctab td:last-child{text-align:right;color:var(--white);font-variant-numeric:tabular-nums;font-weight:600}

/* ---- TradingView open-account button ---- */
.tvopen{text-decoration:none;color:#000;background:var(--amber);font-weight:700;padding:3px 10px;letter-spacing:.3px}
.tvopen:hover{background:#ffb43a}

/* ---- PLAN : checklist + plan doc ---- */
.ckgroup{margin-bottom:12px}
.ckghd{color:var(--amber-dim);font-size:10px;letter-spacing:1.2px;font-weight:700;margin-bottom:5px}
.ckitem{display:flex;align-items:flex-start;gap:10px;padding:8px 4px;border-bottom:1px solid #131313;cursor:pointer}
.ckitem:hover{background:#0e1014}
.ckbox{flex:0 0 auto;width:17px;height:17px;border:1px solid var(--grid);color:transparent;
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;margin-top:1px}
.ckitem.on .ckbox{background:var(--green);border-color:var(--green);color:#000}
.cktxt{flex:1;min-width:0}
.cktxt b{color:var(--white);font-size:12.5px}
.ckitem.on .cktxt b{color:var(--green);text-decoration:line-through;text-decoration-color:var(--amber-dim)}
.cktxt small{display:block;color:var(--muted);font-size:11px;margin-top:1px;line-height:1.4}
.ckjump{flex:0 0 auto;background:#0a0a0a;border:1px solid var(--grid);color:var(--amber);
  font-family:inherit;font-weight:700;padding:1px 8px;cursor:pointer}
.ckjump:hover{border-color:var(--amber)}
#planreset{padding:2px 8px;margin-right:4px}

.plhero{color:#c8c8c8;font-size:12.5px;line-height:1.6;border-left:2px solid var(--amber);padding:2px 0 2px 11px;margin-bottom:11px}
.plrules{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--grid);margin-bottom:14px}
.plrule{background:var(--panel2);padding:8px 10px}
.plrule .k{color:var(--muted);font-size:9.5px;letter-spacing:.5px;text-transform:uppercase}
.plrule .v{color:var(--amber);font-size:18px;font-weight:700;margin:2px 0}
.plrule .d{color:var(--muted);font-size:10.5px;line-height:1.3}
.plsec{margin-bottom:14px}
.plsh{display:flex;align-items:baseline;gap:9px;border-bottom:1px solid var(--amber-dim);padding-bottom:4px;margin-bottom:8px}
.plsh .no{color:var(--amber);font-weight:700;font-size:12px;border:1px solid var(--amber-dim);padding:0 5px}
.plsh .ti{color:var(--white);font-size:13px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}
.plsb p{color:#c4c4c4;font-size:12.5px;line-height:1.6;margin:0 0 8px}
.plsb .plmut{color:var(--muted);font-size:11.5px}
ol.plsteps{list-style:none;counter-reset:s;margin:0;padding:0}
ol.plsteps li{counter-increment:s;position:relative;padding:7px 0 7px 34px;border-bottom:1px solid #131313}
ol.plsteps li:last-child{border-bottom:0}
ol.plsteps li::before{content:counter(s,decimal-leading-zero);position:absolute;left:0;top:7px;
  color:var(--amber);font-weight:700;font-size:12px;border:1px solid var(--amber-dim);padding:0 5px}
.plsb b{color:var(--white)}
.plsb small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px;line-height:1.45}
.plcall{background:#15110033;border:1px solid var(--amber-dim);padding:8px 11px;font-size:12px;
  line-height:1.55;color:#d6d6d6;margin:4px 0}
.plcall.r{background:#1a0c0c33;border-color:#5a1620}
.plcall b{color:var(--amber)}
.pltag{font-weight:700;padding:0 5px;color:#000}
.pltag.g{background:var(--green)}
.pltag.o{background:var(--amber)}
.plgate{display:flex;gap:10px;align-items:flex-start;padding:6px 0;border-bottom:1px solid #131313}
.plgate .gn{flex:0 0 auto;width:18px;height:18px;border:1px solid var(--amber-dim);color:var(--amber);
  display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}
.plgate small{display:block;color:var(--muted);font-size:11.5px;margin-top:1px;line-height:1.4}
.plladbar{display:flex;gap:2px;margin:6px 0 8px}
.plladbar span{flex:1;text-align:center;font-size:10px;font-weight:700;padding:3px 0;color:#000}
.plladbar .t1{background:#1f7a44}.plladbar .t2{background:#2a9d5a}.plladbar .t3{background:var(--green)}
ul.pllad,ul.pldont{margin:0;padding-left:0;list-style:none}
ul.pllad li{display:flex;gap:10px;align-items:flex-start;padding:5px 0;border-bottom:1px solid #131313;font-size:12px;color:#c4c4c4}
ul.pllad .rr{flex:0 0 auto;color:var(--amber);font-weight:700;min-width:34px}
ul.pldont li{position:relative;padding:5px 0 5px 18px;font-size:12px;color:#c4c4c4;border-bottom:1px solid #131313}
ul.pldont li::before{content:"✕";position:absolute;left:0;color:var(--red);font-weight:700}

/* ---- HOME dashboard ---- */
.hometools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.homehello{color:var(--amber);font-weight:700;letter-spacing:1.5px;font-size:13px}
.homepick .pickgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:6px;padding:8px}
.pickitem{text-align:left;background:var(--panel2);border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:12px;padding:9px 11px;cursor:pointer}
.pickitem:hover{border-color:var(--amber);color:var(--amber)}
.homegrid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}
.homew{background:var(--panel);border:1px solid var(--grid);min-width:0;display:flex;flex-direction:column}
.homegrid.editing .homew{border-color:var(--amber-dim);border-style:dashed}
.hwhead{display:flex;justify-content:space-between;align-items:center;gap:6px;
  background:var(--amber-dim);color:#000;padding:4px 9px;font-size:11px;font-weight:700;letter-spacing:.4px}
.hwhead>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hwctrl{display:flex;gap:3px;flex:0 0 auto}
.hwctrl button{background:#0a0a0a;color:var(--amber);border:1px solid #000;font-family:inherit;
  font-size:10px;font-weight:700;padding:1px 6px;cursor:pointer;line-height:1.5}
.hwctrl button:disabled{opacity:.3;cursor:default}
.hwctrl .hwcfg{background:#0a0a0a;color:var(--amber);border:1px solid #000;font-family:inherit;font-size:10px}
.hwbody{padding:9px 10px;flex:1;min-width:0;overflow:hidden}
.hwbody .wlist{display:flex;flex-direction:column}
.ovrow{display:flex;align-items:center;gap:8px;padding:3px 0;border-bottom:1px solid #131313;
  font-size:11.5px;white-space:nowrap}
.ovrow .meet{color:var(--amber);font-weight:600;min-width:46px}
.ovrow .ht{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#cfcfcf;flex:1}
.ovrow .muted{color:var(--muted)}
.ovrow>span:nth-child(2){margin-left:auto}
.ovrow .ht{margin-left:0}
.strow{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:11.5px}
.strow .meet{min-width:42px;color:var(--amber)}
.strow .forcebar{flex:1}
.clkbig{font-size:30px;font-weight:700;color:var(--amber);text-align:center;letter-spacing:1px}
.clksub{text-align:center;color:var(--muted);font-size:11px;text-transform:capitalize;margin-bottom:8px}
.clksess{display:flex;flex-direction:column;gap:3px}
.clkrow{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:center;font-size:11.5px;color:var(--white)}
.clkcity{color:var(--cyan);font-variant-numeric:tabular-nums;letter-spacing:.5px}
.clkstatus{text-align:right;min-width:64px}
.bnstat{font-size:13px;color:var(--white);margin-bottom:3px}
.bnstat b{color:var(--amber);font-size:17px}
.bnnext{font-size:11.5px;color:var(--muted);margin-bottom:6px}
.hnews{display:flex;flex-direction:column;max-height:340px;overflow-y:auto}
.hnewsrow{display:flex;gap:8px;padding:4px 0;border-bottom:1px solid #131313;text-decoration:none}
.hnewsrow .hm{color:var(--amber);font-weight:700;font-size:11px;white-space:nowrap}
.hnewsrow .ht{color:#cfcfcf;font-size:11.5px;line-height:1.3}
.hnewsrow:hover .ht{color:#fff}
.homenote{width:100%;min-height:150px;background:#0c0c0c;border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:12px;padding:8px;outline:none;resize:vertical}
@media(max-width:760px){.homegrid{grid-template-columns:1fr}.homew{grid-column:span 1 !important}}

/* ---- BC sub-navigation ---- */
.subnav{display:flex;gap:0;flex-wrap:wrap;background:#080808;border-bottom:1px solid var(--grid);
  margin:-10px -10px 0;padding:0 4px}
.subkey{border:none;background:transparent;color:var(--muted);font-family:inherit;
  font-size:11.5px;letter-spacing:.4px;cursor:pointer;padding:8px 12px;border-bottom:2px solid transparent}
.subkey:hover{color:var(--white)}
.subkey.active{color:var(--amber);border-bottom-color:var(--amber)}
.subview{margin-top:10px;display:grid;gap:10px}

/* ---- FX search bar ---- */
.fxsearch{display:flex;align-items:center;gap:8px}
.fxsearch .mag{color:var(--amber);font-size:16px}
.fxsearch input{flex:1;background:#0c0c0c;border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:13px;padding:7px 10px;outline:none;letter-spacing:.5px}
.fxsearch input:focus{border-color:var(--amber-dim)}
.fxsearch input::placeholder{color:#5a5a5a}
.fxsearch #fxclear{padding:6px 10px}

/* ---- layout ---- */
main{padding:10px;display:grid;gap:10px;max-width:1500px;margin:0 auto}
.row{display:grid;gap:10px}
@media(min-width:980px){.row.two{grid-template-columns:1fr 1fr}}
.panel{background:var(--panel);border:1px solid var(--grid);position:relative}
.panel>h2{
  margin:0;font-size:11.5px;letter-spacing:1.5px;font-weight:700;
  color:#000;background:var(--amber);padding:3px 9px;
  display:flex;justify-content:space-between;align-items:center;
}
.panel>h2 .sub{color:#3a2600;font-weight:400;letter-spacing:.5px}
.panel .body{padding:9px 10px}

/* ---- headline stat strip ---- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;background:var(--grid)}
.stat{background:var(--panel2);padding:7px 10px}
.stat .k{color:var(--muted);font-size:10px;letter-spacing:.8px;text-transform:uppercase}
.stat .v{color:var(--white);font-size:18px;font-weight:700;line-height:1.15;margin-top:2px}
.stat .v.amber{color:var(--amber)}
.stat .v small{font-size:11px;color:var(--muted);font-weight:400}

/* ---- hike / hold / cut breakdown ---- */
.hhcstats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--grid);margin-bottom:9px}
.hhcs{background:var(--panel2);padding:8px 10px;text-align:center}
.hhcs .k{font-size:10.5px;letter-spacing:.6px;color:var(--muted);font-weight:700}
.hhcs .k.up{color:var(--green)}
.hhcs .k.down{color:var(--red)}
.hhcs .v{font-size:24px;font-weight:700;color:var(--white);margin-top:3px;font-variant-numeric:tabular-nums}
.hhcs .v.up{color:var(--green)}
.hhcs .v.down{color:var(--red)}
.hhcbar{display:flex;height:24px;border:1px solid var(--grid);overflow:hidden}
.hhcbar .seg{display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;
  color:#000;white-space:nowrap;overflow:hidden;transition:width .4s ease}
.hhcbar .seg.hike{background:var(--green)}
.hhcbar .seg.hold{background:#333;color:var(--muted)}
.hhcbar .seg.cut{background:var(--red)}

/* ---- data table ---- */
table.grid{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
table.grid th{
  text-align:right;color:var(--amber-dim);font-weight:600;font-size:10.5px;
  letter-spacing:.6px;padding:5px 8px;border-bottom:1px solid var(--amber-dim);
  text-transform:uppercase;white-space:nowrap;
}
table.grid th:first-child,table.grid td:first-child{text-align:left}
table.grid td{padding:4px 8px;border-bottom:1px solid #131313;color:var(--white);white-space:nowrap}
table.grid tr:hover td{background:#101216}
table.grid .meet{color:var(--amber)}
/* tableau COT (Smart Money) : en-têtes ET valeurs alignés à gauche */
table.cotgrid th,table.cotgrid td{text-align:left}
table.grid .next td{background:#15110055}
.up{color:var(--green)}
.down{color:var(--red)}
.flat{color:var(--muted)}
.dir{font-weight:700;letter-spacing:.5px}

/* probability bar gauge inside a cell */
.gauge{position:relative;min-width:140px}
.gauge .bar{position:absolute;left:0;top:0;bottom:0;background:var(--amber);opacity:.20}
.gauge .bar.cut{background:var(--red)}
.gauge .bar.hike{background:var(--green)}
.gauge .txt{position:relative;padding:0 6px;text-align:right;display:block}

.chartwrap{height:340px;position:relative}
canvas{max-width:100%}
.legend{display:flex;flex-wrap:wrap;gap:14px;padding:6px 2px 0;font-size:11px}
.legend span{display:flex;align-items:center;gap:6px;color:var(--muted)}
.legend i{width:16px;height:3px;display:inline-block}

/* overview grid of all banks */
.banks{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(480px,1fr))}
.bankcard{background:var(--panel);border:1px solid var(--grid);cursor:pointer;min-width:0}
.bankcard:hover{border-color:var(--amber-dim)}
.bankcard h3{margin:0;font-size:13px;color:#000;background:var(--amber-dim);
  padding:5px 11px;display:flex;justify-content:space-between;letter-spacing:.6px;font-weight:700}
.bankcard h3 .rate{color:#000;font-weight:700}
.ovbody{padding:9px 11px}
.ovstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(82px,1fr));gap:1px;
  background:var(--grid);margin-bottom:9px}
.ovstat{background:var(--panel2);padding:6px 8px;min-width:0;overflow:hidden}
.ovstat .k{color:var(--muted);font-size:9px;letter-spacing:.4px;text-transform:uppercase;white-space:nowrap}
.ovstat .v{color:var(--white);font-size:14px;font-weight:700;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ovstat .v small{font-size:9px;color:var(--muted);font-weight:400}
.ovstat .v.up{color:var(--green)}
.ovstat .v.down{color:var(--red)}
.ovcols{display:grid;grid-template-columns:1fr 210px;gap:10px;align-items:stretch}
table.ovmeet{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
table.ovmeet th{text-align:right;color:var(--amber-dim);font-size:9px;letter-spacing:.4px;
  padding:2px 6px;border-bottom:1px solid var(--grid);white-space:nowrap}
table.ovmeet th:first-child,table.ovmeet td:first-child{text-align:left}
table.ovmeet td{text-align:right;padding:3px 6px;border-bottom:1px solid #131313;
  color:var(--white);font-size:11.5px;white-space:nowrap}
table.ovmeet td.meet{color:var(--amber)}
table.ovmeet td.dir{font-weight:700;font-size:10.5px}
.ovspark{min-height:118px;position:relative}

/* ---- macro matrix ---- */
.macrohint{padding:6px 10px;color:var(--muted);font-size:11px;border-bottom:1px solid var(--grid);
  background:#080808;letter-spacing:.2px}
.macrohint b{color:var(--green)}
table.macro td{text-align:right;font-variant-numeric:tabular-nums}
table.macro td.meet{text-align:left}
table.macro tr.mcat td{text-align:left;background:#1a1407;color:var(--amber);font-weight:700;
  font-size:10.5px;letter-spacing:1.2px;text-transform:uppercase;padding:5px 12px;
  border-top:1px solid var(--amber-dim);border-bottom:1px solid var(--grid)}
td.mcell{cursor:text;outline:none;transition:background .1s}
td.mcell:hover{background:#15171c}
td.mcell:focus{background:#1d1500;box-shadow:inset 0 0 0 1px var(--amber)}
td.mcell.over{color:var(--cyan)}                 /* a value you edited */
td.mcell.over::after{content:"•";color:var(--amber);font-size:9px;vertical-align:6px;margin-left:3px}
td.mcell.calhit::after{content:"●";color:var(--green);font-size:7px;vertical-align:5px;margin-left:4px}  /* live from calendar */
td.spread{color:var(--muted);font-style:italic}
.macronotes{width:100%;min-height:70px;background:#0c0c0c;border:1px solid var(--grid);
  color:var(--white);font-family:inherit;font-size:12.5px;padding:8px 10px;outline:none;resize:vertical}
.macronotes:focus{border-color:var(--amber-dim)}

/* strength scoring + carry matrix */
table.macro tr.scoreline td{border-top:1px solid var(--amber-dim);font-weight:600}
table.macro tr.scoreline.strong td{font-size:13px;font-weight:700}
.biascell{text-align:center !important;font-weight:700;font-size:10.5px;letter-spacing:.5px;
  color:#000;border:1px solid #000}
.biascell.bull{background:var(--green)}
.biascell.mildbull{background:#1f7a44;color:#cfffe0}
.biascell.neu{background:#2a2a2a;color:var(--muted)}
.biascell.mildbear{background:#5a1620;color:#ffb9c2}
.biascell.bear{background:var(--red)}

table.carry{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
table.carry th{text-align:right;color:var(--amber-dim);font-size:10.5px;padding:5px 8px;
  border-bottom:1px solid var(--amber-dim)}
table.carry th:first-child{text-align:left}
table.carry td.meet{color:var(--amber);font-weight:600;background:var(--panel2);position:sticky;left:0}
td.carrycell{text-align:right;padding:5px 9px;border:1px solid #0a0a0a;font-variant-numeric:tabular-nums}

/* season custom period tool */
.seadate{background:#0c0c0c;border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:12.5px;padding:5px 8px;outline:none;color-scheme:dark}
.seadate:focus{border-color:var(--amber-dim)}
.searesult{margin-top:4px}
.seatools{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:2px 2px 10px}
.seatools .cbtn.active{background:var(--cyan);border-color:var(--cyan);color:#000;font-weight:700}
.chartwrap.seazoom-on{cursor:crosshair}
.chartwrap.seazoom-on canvas{cursor:crosshair}

/* macro visualisations grid */
.macroviz{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.vizcard{background:var(--panel2);border:1px solid var(--grid);padding:6px 8px 8px;min-width:0}
.viztitle{text-align:center;color:var(--amber);font-size:11px;letter-spacing:1px;
  padding:3px 0 6px;text-transform:uppercase}
.vizchart{height:150px;position:relative}

/* ---- scanner ---- */
.scantools{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.scanchips{display:flex;gap:6px;flex-wrap:wrap}
.scanchip{border:1px solid var(--grid);background:transparent;color:var(--muted);
  font-family:inherit;font-size:11.5px;padding:5px 13px;border-radius:14px;cursor:pointer;letter-spacing:.3px}
.scanchip:hover{color:var(--white)}
.scanchip.active{border-color:var(--amber);color:var(--amber)}
.scangrid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.scancard{background:var(--panel);border:1px solid var(--grid);padding:12px 14px;cursor:pointer;
  transition:border-color .12s;min-width:0}
.scancard:hover{border-color:var(--amber-dim)}
.scanhead{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.pairname{font-size:16px;font-weight:700;color:var(--white);letter-spacing:.5px}
.sigbadge{font-size:12.5px;font-weight:700;letter-spacing:.6px}
.sigbadge.buy{color:var(--green)}
.sigbadge.sell{color:var(--red)}
.sigbadge.neutral{color:var(--muted)}
.scanvs{font-size:11.5px;color:var(--muted);margin-bottom:9px}
.scanvs b{color:var(--white)}
.scanvs .vs{opacity:.55;margin:0 3px}
.scanrow{display:flex;justify-content:space-between;align-items:baseline}
.scanrow b{font-size:15px}
.risk{color:var(--muted);font-size:11px}
.risk .rk-hi{color:var(--amber)}
.scanhint{color:#5a5a5a;font-size:10.5px;text-align:center;margin-top:9px;
  border-top:1px solid var(--grid);padding-top:7px}
.scandetail{margin-top:9px;border-top:1px solid var(--amber-dim);padding-top:7px;font-size:11px}
.scandetail .dl{display:flex;justify-content:space-between;gap:8px;padding:2px 0;color:var(--muted)}
.scandetail .dl b{color:var(--white);white-space:nowrap}

/* ---- risk : fear & greed ---- */
.riskgrid{display:grid;gap:14px}
@media(min-width:860px){.riskgrid{grid-template-columns:340px 1fr}}
.fgleft{text-align:center}
.gaugewrap{display:flex;justify-content:center}
.fgscore{font-size:46px;font-weight:700;line-height:1;margin-top:-6px}
.fgrating{font-size:14px;font-weight:600;letter-spacing:1px;margin-top:2px;text-transform:uppercase}
.fglookbacks{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:14px}
.lbcard{background:var(--panel2);border:1px solid var(--grid);padding:7px 4px;border-radius:3px}
.lbcard .k{color:var(--muted);font-size:9.5px;letter-spacing:.3px;min-height:24px;display:flex;align-items:center;justify-content:center}
.lbcard .v{color:var(--white);font-size:18px;font-weight:700}
.lbcard .d{font-size:11px;font-weight:600;margin-top:1px}
.fgright .subhead{color:var(--amber-dim);font-size:11px;letter-spacing:1px;margin-bottom:6px;font-weight:700}
#fgrefresh{padding:2px 8px;font-size:13px;margin-right:4px}
.tradingview-widget-container{width:100%}

/* ---- currency strength index ---- */
.forcebar{position:relative;height:14px;min-width:180px;background:#0c0c0c;border:1px solid var(--grid)}
.forcebar .zero{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--amber-dim)}
.forcebar .fb{position:absolute;top:1px;bottom:1px;display:block}
.cdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:0}

/* grille « 1 graphique par devise » (onglet DEVISE) */
.curgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;padding:12px}
.cigcard{border:1px solid var(--grid);background:var(--panel)}
.cightitle{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:700;
  padding:7px 10px;border-bottom:1px solid var(--grid);letter-spacing:.3px}
.cigval small{font-weight:400;color:var(--muted)}
.cigchart{height:140px;padding:6px 8px 8px}

/* pop-up dessin (TradingView-like) */
.cdmodal{min-width:min(840px,95vw)}
.cdtools{display:flex;gap:6px;flex-wrap:wrap;width:100%;align-items:center}
.cdtools .cbtn{font-size:11px;padding:5px 9px}
.cdtool.active{background:var(--amber);color:#000;font-weight:700;border-color:var(--amber)}
.cdchartwrap{position:relative;width:min(780px,90vw);height:400px}
.cdchartwrap canvas{position:absolute;top:0;left:0}
#curdrawoverlay{z-index:2;cursor:crosshair}
.zoomhint{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted);
  font-size:10.5px;margin-bottom:7px;letter-spacing:.2px}
.zoomhint b{color:var(--amber-dim)}
.zoomhint .cbtn{margin-left:auto}

/* ---- economic calendar ---- */
table.cal td{vertical-align:middle}
.caltime{color:var(--cyan);font-variant-numeric:tabular-nums;white-space:nowrap}
.calval{color:var(--white);font-variant-numeric:tabular-nums;text-align:right}
table.cal td.flat{text-align:right}
table.cal th:nth-child(5),table.cal th:nth-child(6){text-align:right}
td.imp-h{color:var(--red) !important;text-align:center;font-size:15px}
td.imp-m{color:#ff9d00 !important;text-align:center;font-size:15px}
td.imp-l{color:var(--yellow) !important;text-align:center;font-size:12px}
td.imp-x{color:var(--muted) !important;text-align:center}
tr.hi-evt td{background:#1a0c0c66}
tr.hi-evt td:nth-child(4){color:#fff;font-weight:600}
tr.past-evt td{opacity:.5}
.todaytag{color:#000;background:var(--green);font-size:9px;font-weight:700;
  padding:1px 6px;letter-spacing:.5px;margin-left:6px;vertical-align:1px}

/* ---- wrap page : links + claude chat ---- */
.wrapgrid{display:grid;gap:10px;grid-template-columns:1fr}
@media(min-width:900px){.wrapgrid{grid-template-columns:340px 1fr;align-items:start}}
.wlsess{margin-bottom:12px}
.wlsesshd{margin-bottom:5px}
.wraplnk{display:block;text-decoration:none;padding:6px 8px;border-left:2px solid var(--grid);
  margin-bottom:4px;background:var(--panel2)}
.wraplnk:hover{border-left-color:var(--amber);background:#101216}
.wraplnk .wld{display:block;color:var(--amber);font-size:11px;font-weight:700;text-transform:capitalize}
.wraplnk .wlh{display:block;color:var(--muted);font-size:11px;margin-top:1px;line-height:1.3}
.wraplnk:hover .wlh{color:var(--white)}

.chatpanel .body{display:flex;flex-direction:column;gap:8px}
.chatmsgs{height:420px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:2px}
.chatempty{color:var(--muted);font-size:12px;text-align:center;margin:auto;line-height:1.6;padding:20px}
.cmsg{max-width:88%;padding:8px 11px;font-size:12.5px;line-height:1.5;border:1px solid var(--grid)}
.cmsg-u{align-self:flex-end;background:#15110044;border-color:var(--amber-dim);color:var(--white)}
.cmsg-a{align-self:flex-start;background:var(--panel2);color:#d6d6d6}
.cmsg-a b{color:var(--amber)}
.cmsg code{color:var(--cyan)}
.typing{color:var(--amber-dim);animation:blink 1.1s steps(1) infinite}
.chatsug{display:flex;flex-wrap:wrap;gap:6px}
.chatsugb{font-size:10.5px;padding:4px 9px}
.chatinput{display:flex;gap:8px;align-items:flex-end}
.chatinput textarea{flex:1;background:#0c0c0c;border:1px solid var(--grid);color:var(--white);
  font-family:inherit;font-size:12.5px;padding:8px 10px;outline:none;resize:vertical;min-height:42px}
.chatinput textarea:focus{border-color:var(--amber-dim)}
.chatsend{white-space:nowrap;padding:8px 14px;font-weight:700}
#chatclear{padding:2px 7px;margin-right:4px}

/* wrap daily notes */
.wrapnote{width:100%;min-height:440px;background:#0c0c0c;border:1px solid var(--grid);
  color:var(--white);font-family:inherit;font-size:13px;line-height:1.6;padding:10px 12px;
  outline:none;resize:vertical}
.wrapnote:focus{border-color:var(--amber-dim)}
.dayb.today{border-color:var(--amber)}
.dayb.hasnote::after{content:"●";color:var(--green);font-size:7px;margin-left:5px;vertical-align:2px}
.dayb.active.hasnote::after{color:#0a2a14}

/* ---- session wraps ---- */
.wrapcard .body{padding:10px 14px}
.sessbadge{display:inline-block;color:#000;font-weight:700;font-size:10px;letter-spacing:1px;
  padding:1px 7px;margin-right:7px;vertical-align:1px}
.sessbadge.asia{background:var(--yellow)}
.sessbadge.eu{background:var(--cyan)}
.sessbadge.us{background:var(--green)}
.sessbadge.neu{background:var(--muted)}
.wraphkey{color:var(--amber-dim);font-size:10px;letter-spacing:1.5px;font-weight:700;
  margin:4px 0 6px;text-transform:uppercase}
ul.wraphl{margin:0 0 12px;padding-left:18px}
ul.wraphl li{color:var(--white);margin-bottom:5px;line-height:1.4}
ul.wraphl li .hen{display:block;color:var(--muted);font-size:11px;font-style:italic;margin-top:1px}
.wrapbody{margin-bottom:10px}
.wrapbody p{color:#c8c8c8;line-height:1.55;margin:0 0 9px}
.wraplink{display:inline-block;margin-top:2px;font-size:12px}

/* ---- COT extreme indicator ---- */
.cotflag{display:inline-block;font-size:10px;font-weight:700;padding:1px 5px;margin-right:3px;
  border:1px solid var(--grid);letter-spacing:.3px}
.cotflag.up{color:var(--green);border-color:#1f7a44}
.cotflag.down{color:var(--red);border-color:#5a1620}
.cotgauges{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));padding:4px 0 10px}
.cotg{background:var(--panel2);border:1px solid var(--grid);padding:8px 10px}
.cotglbl{font-size:11px;color:var(--white);margin-bottom:6px}
.cotgbar{position:relative;height:12px;background:#0c0c0c;border:1px solid var(--grid);overflow:hidden}
.cotgzone{position:absolute;top:0;bottom:0;width:15%;opacity:.18}
.cotgzone.lo{left:0;background:var(--green)}
.cotgzone.hi{right:0;background:var(--red)}
.cotgfill{position:absolute;left:0;top:0;bottom:0;opacity:.55}
.cotgmark{position:absolute;top:-2px;bottom:-2px;width:2px;background:#fff;transform:translateX(-1px)}
.cotgsig{font-size:10.5px;font-weight:700;margin-top:5px;letter-spacing:.3px;color:var(--muted)}
.cotgsig.up{color:var(--green)}
.cotgsig.down{color:var(--red)}

/* ---- COT explanatory guide ---- */
.cotguide{margin-top:12px;border-top:1px solid var(--grid);padding-top:10px}
.cotgtitle{color:var(--amber-dim);font-size:10.5px;letter-spacing:1.5px;font-weight:700;margin-bottom:7px}
.cotguide ul{margin:0;padding-left:18px;list-style:none}
.cotguide li{position:relative;color:#c8c8c8;font-size:11.5px;line-height:1.55;margin-bottom:6px}
.cotguide li::before{content:"›";position:absolute;left:-14px;color:var(--amber-dim);font-weight:700}
.cotguide li b{color:var(--white)}
.cotguide .up{color:var(--green);font-weight:700}
.cotguide .down{color:var(--red);font-weight:700}
.cotgreco{margin-top:9px;padding:8px 10px;background:#15110033;border:1px solid var(--amber-dim);
  color:var(--white);font-size:12px;line-height:1.5}
.cotgreco b{color:var(--amber)}

/* ---- news wire ---- */
.wirepulse{color:var(--red);animation:blink 1.1s steps(1) infinite;font-size:9px;vertical-align:1px}
.wire{display:flex;flex-direction:column}
.wirerow{display:grid;grid-template-columns:120px 1fr;gap:12px;
  padding:9px 12px;border-bottom:1px solid #131313;text-decoration:none;
  color:inherit;border-left:2px solid transparent}
.wirerow:hover{background:#101216}
.wirerow.fresh{border-left-color:var(--amber);background:#16110033}
.wirerow.hot{border-left-color:var(--down);background:#2a0d0d55}
.wirerow.hot .fr{color:var(--down);font-weight:700}
.wirerow.hot.fresh{background:#3a0e0e77}
@keyframes hotpulse{0%,100%{background:#2a0d0d55}50%{background:#4a121266}}
.wirerow.hot.fresh{animation:hotpulse 1.3s ease-in-out 3}
.wtime .hottag{color:#fff;background:var(--down);font-size:9px;font-weight:700;
  letter-spacing:.4px;padding:0 5px;margin-top:2px;white-space:nowrap}
.wtime{display:flex;flex-direction:column;gap:1px;align-items:flex-start;white-space:nowrap}
.wtime .hm{color:var(--amber);font-weight:700;font-variant-numeric:tabular-nums}
.wtime .rel{color:var(--muted);font-size:10px}
.wtime .newtag{color:#000;background:var(--amber);font-size:9px;font-weight:700;
  letter-spacing:.5px;padding:0 5px;margin-top:2px}
.wbody .fr{color:var(--white);line-height:1.4}
.wbody .en{color:var(--muted);font-size:11px;font-style:italic;margin-top:3px;line-height:1.35}

/* ---- fx sentiment diverging bars ---- */
.sentcell{min-width:200px}
.sentbar{display:flex;height:16px;width:100%;background:#0c0c0c;border:1px solid var(--grid);overflow:hidden}
.sentbar .sShort,.sentbar .sLong{display:flex;align-items:center;font-size:10px;font-weight:700;
  color:#000;overflow:hidden;white-space:nowrap;transition:width .4s ease}
.sentbar .sShort{background:var(--red);justify-content:flex-start;padding-left:5px}
.sentbar .sLong{background:var(--blue);justify-content:flex-end;padding-right:5px}

/* grille de donuts retail (Long bleu / Short rouge) */
.donutgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:12px;padding:12px}
.donutcard{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer}
.donutcard:hover .donutname{text-decoration:underline}
.donutc{width:104px;height:104px}
.donutname{font-size:11px;font-weight:700;color:var(--amber);letter-spacing:.4px}
.donutpc{font-size:10px;letter-spacing:.3px}
.donutpc .dl{color:var(--blue);font-weight:700}
.donutpc .ds{color:var(--red);font-weight:700}

/* pop-up donut au clic */
.dmodal{position:fixed;inset:0;background:rgba(0,0,0,.66);display:flex;align-items:center;justify-content:center;z-index:1000}
.dmodalcard{position:relative;background:var(--bg);border:1px solid var(--amber);border-radius:18px;
  box-shadow:0 0 0 2px #000,0 10px 40px rgba(0,0,0,.6);
  padding:20px 26px 22px;display:flex;flex-direction:column;align-items:center;gap:11px;min-width:250px}
.dmodalx{position:absolute;top:5px;right:8px;background:none;border:none;color:var(--muted);cursor:pointer;font-size:15px;line-height:1}
.dmodalx:hover{color:var(--amber)}
.dmodalname{font-size:15px;font-weight:700;color:var(--amber);letter-spacing:1.5px}
.dmodalc{width:200px;height:200px}
.dmodalbar{height:20px;border-radius:6px}
.dmodalrows{width:100%;font-size:12px;display:flex;flex-direction:column;gap:6px}
.dmrow{display:flex;justify-content:space-between;gap:26px;font-variant-numeric:tabular-nums}
.dmrow .dl{color:var(--blue);font-weight:700}
.dmrow .ds{color:var(--red);font-weight:700}
.dmpos{color:var(--muted);border-top:1px solid var(--grid);padding-top:6px;margin-top:2px}

/* pop-up historique macro */
.mhmodal{min-width:min(580px,92vw)}
.mhcur{font-size:12px;color:var(--muted)}
.mhcur b{color:var(--amber);font-size:14px}
.mhchartwrap{width:min(540px,86vw);height:280px}
.mhsrc{font-size:10px;color:var(--muted);letter-spacing:.3px;text-align:center}
td.mhcell{cursor:pointer}
td.mhcell:hover{outline:1px solid var(--amber);outline-offset:-1px}

.note{color:var(--muted);font-size:10.5px;padding:6px 2px;letter-spacing:.3px}
.err{color:var(--red);padding:14px;letter-spacing:.5px}
.loading{color:var(--amber-dim);padding:14px;letter-spacing:2px;animation:blink 1.1s steps(1) infinite}
a.src{color:var(--cyan);text-decoration:none}
a.src:hover{text-decoration:underline}

/* ============================================================
   MOBILE  —  phones / tablets on the same wifi
   ============================================================ */
/* respect the notch / status bar */
.cmdbar{padding-top:max(5px,env(safe-area-inset-top));
  padding-left:max(10px,env(safe-area-inset-left));
  padding-right:max(10px,env(safe-area-inset-right))}
main{padding-bottom:max(10px,env(safe-area-inset-bottom))}

@media(max-width:760px){
  body{font-size:13px}
  /* command bar wraps; drop the decorative command line to save room */
  .cmdbar{flex-wrap:wrap;gap:8px}
  .cmdbar .cmdline{display:none}
  .cmdbar .brand{order:0}
  .cmdbar .clock{order:5;font-size:11px}
  .cmdbar .live{order:6}
  .cmdbar .cbtn{order:4;padding:4px 10px}      /* bigger tap targets */

  /* function keys: one scrollable row instead of wrapping */
  .fkeys{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .fkeys::-webkit-scrollbar{height:0}
  .fkey{flex:0 0 auto;padding:10px 13px}
  .fkey .fn{display:none}                       /* hide F-numbers, keep the codes */

  /* tables scroll sideways inside their panel */
  .panel .body{overflow-x:auto;-webkit-overflow-scrolling:touch}
  table.grid{min-width:560px}
  table.grid th,table.grid td{padding:7px 8px} /* roomier rows for touch */

  /* charts a touch shorter on small screens */
  .chartwrap{height:280px !important}
  .stat .v{font-size:16px}

  /* overview cards full width (minmax(0,..) lets the chart shrink) */
  .banks{grid-template-columns:minmax(0,1fr)}
  .ovcols{grid-template-columns:1fr}
  .ovstats{grid-template-columns:repeat(3,1fr)}

  /* news wire: tighter time column on phones */
  .wirerow{grid-template-columns:64px 1fr;gap:9px;padding:11px 12px}
  .wtime .rel{display:none}
}

@media(max-width:380px){
  .fkey{padding:10px 11px;font-size:12px}
  .stats{grid-template-columns:repeat(2,1fr)}
}

/* ============================================================
   BLOOMBERG DENSIFY  —  ticker, densité, cockpit
   ============================================================ */
/* ---- ticker défilant ---- */
.ticker{background:#070707;border-bottom:1px solid var(--grid);overflow:hidden;white-space:nowrap;height:23px}
.tickrun{display:inline-block;white-space:nowrap;animation:tickscroll 80s linear infinite;will-change:transform}
.ticker:hover .tickrun{animation-play-state:paused}
@keyframes tickscroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.ti{display:inline-block;padding:0 13px;font-size:11.5px;line-height:23px;color:var(--white)}
.ti b{color:var(--amber);font-weight:700;margin-right:5px;letter-spacing:.3px}
.ti i{font-style:normal;margin-left:3px}
.ti .up{color:var(--green)} .ti .down{color:var(--red)} .ti .flat{color:var(--muted)}
.tisep{color:#2e2e2e;padding:0 1px}

/* ---- densité (desktop) : plus de data par écran, façon Bloomberg ---- */
@media (min-width:760px){
  body{font-size:12px;line-height:1.3}
  .panel .body{padding:6px 8px}
  .panel>h2{font-size:11px;padding:4px 9px}
  table.grid th{padding:3px 7px;font-size:9.5px}
  table.grid td{padding:2.5px 7px;font-size:11px}
  .stat{padding:5px 9px}
  .stat .v{font-size:15px}
  .stat .k{font-size:9px}
  .note{font-size:10px;padding:4px 2px}
  main{padding:0}
  .panel{margin-bottom:6px}
}

/* ---- COCKPIT : grille dense multi-panneaux ---- */
.ckpit{display:grid;grid-template-columns:repeat(12,1fr);gap:7px;padding:7px}
.ckcard{background:var(--panel);border:1px solid var(--grid);display:flex;flex-direction:column;min-height:0;overflow:hidden}
.ckcard>h3{margin:0;background:var(--amber);color:#000;font-size:10px;font-weight:700;letter-spacing:.5px;
  padding:3px 8px;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center}
.ckcard>h3 span{color:#5a3a00;font-weight:600;font-size:9px}
.ckbody{padding:4px 7px;overflow:auto;font-size:11px;flex:1}
.ckbody.scroll{max-height:230px}
.ckrow{display:flex;justify-content:space-between;gap:8px;padding:1.5px 0;border-bottom:1px solid #111;white-space:nowrap}
.ckrow:last-child{border-bottom:0}
.ckrow .lbl{color:var(--amber);font-weight:600}
.ckrow .lbl small{color:var(--muted);font-weight:400;margin-left:4px}
.ckrow .v{font-variant-numeric:tabular-nums}
.ckrow .up{color:var(--green)} .ckrow .down{color:var(--red)} .ckrow .flat{color:var(--muted)} .ckrow .cy{color:var(--cyan)}
.ckmini{display:flex;align-items:center;gap:5px}
.ckbar{height:7px;flex:1;background:var(--red);position:relative;border-radius:1px;overflow:hidden;min-width:46px}
.ckbar i{position:absolute;left:0;top:0;bottom:0;background:var(--green)}
.col2{grid-column:span 2}.col3{grid-column:span 3}.col4{grid-column:span 4}
.col5{grid-column:span 5}.col6{grid-column:span 6}.col8{grid-column:span 8}.col12{grid-column:span 12}
@media (max-width:1100px){ .ckpit{grid-template-columns:repeat(6,1fr)} .col3,.col4,.col5{grid-column:span 3} .col6,.col8{grid-column:span 6} }
@media (max-width:700px){ .ckpit{grid-template-columns:1fr} [class*=col]{grid-column:span 1!important} }

/* ---- heatmaps (matrice + bookmap-style) ---- */
.hm{width:100%;border-collapse:collapse;font-size:9.5px;font-variant-numeric:tabular-nums}
.hm th{color:var(--cyan);font-weight:700;padding:1px 3px;font-size:9px;text-align:center}
.hm td{padding:2px 1px;text-align:center;color:#fff;border:1px solid #080808;min-width:22px}
.hm td.hd{color:#3a3a3a;background:#0a0a0a}
.hm.hmt td{height:13px;min-width:8px;padding:0;border:1px solid #050505}
.hm.hmt th{text-align:right;padding-right:6px;color:var(--amber);font-size:9.5px}
/* sparklines inline */
.spark{vertical-align:middle;opacity:.92;margin-right:2px}
.ckmini{gap:6px}
/* accents bleus facon Bloomberg */
.ckcard>h3>span:last-child{color:#1f4d6b}
.ckrow .lbl small{color:var(--cyan)}

/* cartes cockpit cliquables */
.ckcard.cknav{cursor:pointer}
.ckcard.cknav:hover{border-color:var(--amber)}
.ckcard.cknav:hover>h3{filter:brightness(1.1)}
.ckgo{color:#5a3a00;font-size:10px;margin-left:3px}

/* sparkline dans les cartes du scanner */
.scanspark{margin:3px 0 1px;line-height:0}
.scanspark svg{width:100%;height:24px;display:block;opacity:.85}

/* squawk (lecture vocale) */
.squawkbtn.active{background:var(--green);border-color:var(--green);color:#000;font-weight:700}
.cksquawk{padding:2px 0 6px;border-bottom:1px solid #111;margin-bottom:4px}
.cksquawk .cbtn{font-size:10px;padding:2px 8px}

/* contrôle de volume */
.volctl{display:inline-flex;align-items:center;gap:4px;vertical-align:middle}
.volicon{font-size:12px}
.volrange{width:74px;height:4px;cursor:pointer;accent-color:var(--amber);vertical-align:middle}

/* onglets = liens (ouvrir dans un nouvel onglet via Cmd/molette/clic droit) */
a.fkey{text-decoration:none}
a.fkey,a.fkey:visited{color:var(--muted)}
a.fkey:hover{color:var(--white)}
a.fkey.active,a.fkey.active:visited{color:#000}

/* BANK TRADES */
tr.btrow{cursor:pointer}
tr.btrow:hover td{background:#151310}
tr.btrow.on td{background:#1d1a12;box-shadow:inset 2px 0 0 var(--amber)}
td.btchart{text-align:center;cursor:pointer}
td.btchart:hover{filter:brightness(1.3)}
td.btdel{text-align:center;cursor:pointer;color:var(--muted)}
td.btdel:hover{color:var(--red)}
