:root{
  --bg:#090b0e;--panel:#11151a;--panel2:#171c22;--text:#f4f6f8;--muted:#8d98a6;
  --accent:#ff4d1a;--accent2:#ff7a18;--green:#38d39f;--red:#ff5b68;--yellow:#ffc857;
  --line:#252c34;--radius:18px;--shadow:0 14px 40px rgba(0,0,0,.25)
}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 50% -10%,#20252d 0,#090b0e 38%);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh}
button,input,select{font:inherit}button{cursor:pointer;color:inherit}.topbar{height:74px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;position:sticky;top:0;z-index:10;background:rgba(9,11,14,.88);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}
.brand{font-weight:900;letter-spacing:.08em;font-size:18px}.brand span{color:var(--accent)}.muted,.hint{color:var(--muted);font-size:12px}.icon-btn,.small-btn,.back-btn{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:9px 12px}.icon-btn{font-size:23px;width:44px;height:44px}.small-btn{font-size:12px}.back-btn{margin-bottom:12px}
main{max-width:1050px;margin:auto;padding:18px 16px 100px}.screen{display:none}.screen.active{display:block}.hero-card{background:linear-gradient(135deg,#171c22,#0f1216);border:1px solid var(--line);border-radius:24px;padding:22px;display:flex;justify-content:space-between;gap:16px;box-shadow:var(--shadow);margin-bottom:18px}.eyebrow{font-size:11px;color:var(--accent2);font-weight:800;letter-spacing:.15em;margin:0 0 6px}.hero-card h1,.page-title h1{margin:0 0 6px;font-size:28px}.pulse{min-width:76px;height:76px;border-radius:50%;display:grid;place-items:center;border:5px solid var(--green);font-weight:900;font-size:20px}
section{margin:20px 0}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.section-head h2{font-size:17px;margin:0}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px}.asset-card,.settings-card,.watch-row{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:15px}.asset-card{transition:.15s}.asset-card:hover{transform:translateY(-2px);border-color:#3a444f}.asset-top,.asset-price,.score-line,.range{display:flex;justify-content:space-between;align-items:center;gap:10px}.ticker{font-weight:900;font-size:17px}.name{font-size:11px;color:var(--muted)}.price{font-size:24px;font-weight:850;margin:12px 0 3px}.positive{color:var(--green)}.negative{color:var(--red)}.warning{color:var(--yellow)}.badge{font-size:10px;font-weight:800;padding:5px 8px;border-radius:999px;background:#20262d}.badge.green{color:var(--green)}.badge.red{color:var(--red)}.badge.yellow{color:var(--yellow)}.mini-chart{height:58px;margin:8px -3px 4px}.mini-chart svg{width:100%;height:100%}.range{font-size:11px;color:var(--muted)}.range-bar{height:5px;background:#2a3037;border-radius:99px;margin:6px 0 0;overflow:hidden}.range-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:99px}.alert-stack{display:grid;gap:8px}.alert{padding:12px 14px;background:#18151a;border:1px solid #38262a;border-left:3px solid var(--red);border-radius:12px;font-size:13px}
.news-list{display:grid;gap:9px}.news-item{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px}.news-item .meta{font-size:10px;color:var(--muted);margin-bottom:5px}.news-item h3{font-size:14px;margin:0 0 6px}.news-item p{font-size:12px;color:#b8c0c9;margin:0}.impact{float:right;font-size:10px;padding:4px 7px;border-radius:8px;background:#20262d}
.add-row{display:grid;grid-template-columns:1fr 120px auto;gap:8px;margin:15px 0}.add-row input,.add-row select,.settings-card input{background:var(--panel);border:1px solid var(--line);color:var(--text);padding:12px;border-radius:12px;outline:none}.primary{background:linear-gradient(135deg,var(--accent),var(--accent2));border:0;border-radius:12px;padding:12px 16px;font-weight:800}.watch-row{display:grid;grid-template-columns:100px 1fr 110px 110px 90px;align-items:center;gap:12px;margin-bottom:8px}.watch-row input{width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:8px;border-radius:9px}.remove{background:none;border:0;color:var(--muted)}
.detail-head{display:flex;justify-content:space-between;align-items:start}.detail-price{font-size:38px;font-weight:900}.big-chart{height:220px;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:10px;margin:15px 0}.big-chart svg{width:100%;height:100%}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.metric{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px}.metric b{display:block;font-size:18px;margin-top:5px}.timeline{display:grid;gap:10px}.event{display:grid;grid-template-columns:72px 1fr;gap:12px}.date-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:10px;text-align:center}.date-box b{display:block;font-size:18px}.event-body{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:13px}.event-body h3{font-size:14px;margin:0 0 5px}.event-body p{font-size:12px;color:var(--muted);margin:0}.settings-card{margin-bottom:12px}.settings-card h3{margin-top:0}.settings-card label{display:block;font-size:12px;color:var(--muted);margin:12px 0}.settings-card input{display:block;width:100%;margin-top:6px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:76px;background:rgba(12,14,18,.94);backdrop-filter:blur(18px);border-top:1px solid var(--line);display:flex;justify-content:center;z-index:20}.nav{background:none;border:0;color:var(--muted);font-size:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-width:70px}.nav span{font-size:20px}.nav.active{color:var(--text)}.nav.active span{color:var(--accent)}
@media(max-width:650px){.hero-card{padding:18px}.hero-card h1{font-size:24px}.cards{grid-template-columns:1fr}.add-row{grid-template-columns:1fr 100px}.add-row .primary{grid-column:1/-1}.watch-row{grid-template-columns:70px 1fr 75px;}.watch-row .limit{display:none}.watch-row button{grid-column:3}.metrics{grid-template-columns:1fr 1fr 1fr}.bottom-nav .nav{min-width:58px}.detail-price{font-size:32px}}

/* Seuils personnalisés */
.asset-card.threshold-below{border:2px solid var(--red);box-shadow:0 0 0 1px rgba(255,91,104,.08),0 12px 30px rgba(255,91,104,.08)}
.asset-card.threshold-above{border:2px solid var(--green);box-shadow:0 0 0 1px rgba(56,211,159,.08),0 12px 30px rgba(56,211,159,.08)}
.asset-card:not(.threshold-below):not(.threshold-above){border:1px solid var(--line);box-shadow:none}
.badge.neutral{color:var(--muted)}
.threshold-edit{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 5px}
.threshold-edit label{font-size:10px;color:var(--muted);font-weight:700}
.threshold-edit input{display:block;width:100%;margin-top:4px;background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:7px 8px;border-radius:8px;font-size:12px}
.threshold-edit input:focus{outline:1px solid var(--accent)}

/* Édition des seuils depuis la fiche d'un actif */
.threshold-detail{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px;margin:12px 0}
.threshold-detail label{font-size:11px;color:var(--muted);font-weight:800}
.threshold-detail input{display:block;width:100%;margin-top:6px;background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:11px 12px;border-radius:10px;font-size:15px}
.threshold-detail input:focus{outline:2px solid var(--accent);border-color:var(--accent)}
.detail-price.threshold-below{border:2px solid var(--red);border-radius:12px;padding:8px 12px}
.detail-price.threshold-above{border:2px solid var(--green);border-radius:12px;padding:8px 12px}
@media(max-width:650px){.threshold-detail{grid-template-columns:1fr}}

.threshold-edit input,.threshold-detail input{cursor:text;pointer-events:auto;user-select:text;-webkit-user-select:text}
.threshold-edit,.threshold-detail{position:relative;z-index:5}

.threshold-edit{margin:10px 0 6px;position:relative;z-index:6}
.threshold-button{width:100%;padding:9px 10px;font-size:12px}
.threshold-detail{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}
.threshold-detail strong{display:block;font-size:18px;margin-top:4px}
.modal-backdrop{display:none;position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.72);backdrop-filter:blur(6px);align-items:center;justify-content:center;padding:18px}
.modal-backdrop.open{display:flex}
.modal{position:relative;width:min(430px,100%);background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:0 25px 80px rgba(0,0,0,.5)}
.modal h2{margin:5px 0;font-size:22px}
.modal label{display:block;color:var(--muted);font-size:12px;font-weight:800;margin-top:15px}
.modal input{display:block;width:100%;margin-top:6px;background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:13px;border-radius:11px;font-size:17px}
.modal input:focus{outline:2px solid var(--accent);border-color:var(--accent)}
.modal-close{position:absolute;right:12px;top:10px;border:0;background:none;color:var(--muted);font-size:28px}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}
@media(max-width:650px){.threshold-detail{grid-template-columns:1fr 1fr}.threshold-detail .threshold-button{grid-column:1/-1}}

.threshold-button{position:relative;z-index:20;pointer-events:auto;cursor:pointer}

.threshold-edit{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0 5px;position:relative;z-index:10}
.threshold-edit label,.threshold-detail label{font-size:10px;color:var(--muted);font-weight:800}
.threshold-edit input,.threshold-detail input{display:block;width:100%;margin-top:5px;background:var(--panel2);border:1px solid var(--line);color:var(--text);padding:10px 9px;border-radius:9px;font-size:14px;cursor:text;pointer-events:auto;user-select:text;-webkit-user-select:text}
.threshold-edit input:focus,.threshold-detail input:focus{outline:2px solid var(--accent);border-color:var(--accent)}
.detail-button{width:100%;margin-top:10px}
.threshold-detail{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px;margin:12px 0}
@media(max-width:650px){.threshold-detail{grid-template-columns:1fr}}

/* V1.9: threshold editors are always real, clickable inputs. */
.threshold-edit{position:relative;z-index:10}
.threshold-edit input,.threshold-detail input{pointer-events:auto!important;cursor:text!important;user-select:text!important;-webkit-user-select:text!important}
.threshold-edit input:focus,.threshold-detail input:focus{outline:2px solid var(--accent)!important;border-color:var(--accent)!important}

/* V2.0 — seuils éditables uniquement dans la fiche détail. */
.metric-input{
  display:block;
  width:100%;
  margin-top:5px;
  background:var(--panel2);
  border:1px solid var(--line);
  color:var(--text);
  padding:0;
  border-radius:8px;
  font-size:18px;
  font-weight:850;
  line-height:1.2;
  outline:none;
  pointer-events:auto;
  user-select:text;
  -webkit-user-select:text;
}
.metric-input:focus{
  border-color:var(--accent);
  outline:2px solid var(--accent);
  outline-offset:1px;
}
.metric-input::-webkit-inner-spin-button,
.metric-input::-webkit-outer-spin-button{opacity:1}

/* V2.1 — Mini/Maxi are editable only in the detail metric boxes. */
.metric-input{
  display:block;
  width:100%;
  margin-top:5px;
  padding:0;
  background:transparent;
  border:0;
  color:var(--text);
  font-size:18px;
  font-weight:850;
  line-height:1.2;
  outline:none;
  pointer-events:auto;
  cursor:text;
  user-select:text;
  -webkit-user-select:text;
}
.metric-input:focus{
  background:var(--panel2);
  border:1px solid var(--accent);
  border-radius:8px;
  padding:5px 7px;
  margin-top:0;
  outline:2px solid var(--accent);
}

/* V2.2 — état des seuils visible aussi sur la fiche détail. */
.detail-page{
  border:2px solid transparent;
  border-radius:24px;
  padding:22px;
  margin-top:4px;
}
.detail-page.threshold-below{
  border-color:var(--red);
  box-shadow:0 0 0 1px rgba(255,91,104,.08),0 14px 40px rgba(255,91,104,.08);
}
.detail-page.threshold-above{
  border-color:var(--green);
  box-shadow:0 0 0 1px rgba(56,211,159,.08),0 14px 40px rgba(56,211,159,.08);
}
.detail-page:not(.threshold-below):not(.threshold-above){
  border-color:transparent;
  box-shadow:none;
}

.analysis-section{margin:18px 0}
.opportunity-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.opportunity{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:16px}
.opportunity.buy{border-left:4px solid var(--green)}
.opportunity.sell{border-left:4px solid var(--red)}
.opp-title{font-weight:850;font-size:15px}
.opp-score{font-size:32px;font-weight:950;margin-top:8px}
.opp-level{font-size:13px;font-weight:800;margin-bottom:10px}
.opportunity ul{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}
.opportunity li{font-size:12px;color:#c0c7cf;padding-top:7px;border-top:1px solid var(--line)}
.empty-state{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;color:var(--muted);font-size:13px}
.event.compact{margin-bottom:9px}
.analysis-note{color:var(--muted);font-size:11px;text-align:center;margin:20px 0}
.metric-input{display:block;width:100%;margin-top:5px;background:transparent;border:0;color:var(--text);font-size:18px;font-weight:850;line-height:1.2;outline:none;pointer-events:auto;cursor:text}
.metric-input:focus{background:var(--panel2);border:1px solid var(--accent);border-radius:8px;padding:5px 7px;outline:2px solid var(--accent)}
@media(max-width:700px){.opportunity-grid{grid-template-columns:1fr}}

.analysis-explain{font-size:12px;color:var(--muted);margin:0 0 12px}

/* V3.2 — scores lisibles : Achat/Vente explicitement nommés, score en dégradé rouge → blanc → vert. */
.quick-opportunities{
  display:flex;
  align-items:center;
  gap:14px;
  font-size:10px;
  color:var(--muted);
  white-space:nowrap;
}
.quick-opportunities span{
  display:flex;
  align-items:baseline;
  gap:5px;
}
.quick-opportunities b{
  font-size:9px;
  letter-spacing:.06em;
}
.score-number{
  --score:50;
  color:hsl(calc(var(--score) * 1.2), 75%, 58%);
}
.quick-opportunities .score-number{
  font-size:14px;
  font-weight:950;
}
.opp-title{
  font-size:14px;
  font-weight:900;
  letter-spacing:.06em;
}
.opp-score{
  font-size:34px;
  font-weight:950;
  margin-top:8px;
}

.score-number{
  color:rgb(255,255,255);
}

/* V3.3 — symboles A/V compacts pour les scores */
.quick-opportunities{gap:12px}
.quick-opportunities span{gap:4px}
.quick-opportunities .av-icon{
  font-size:12px;
  color:var(--text);
  line-height:1;
  font-weight:900;
}
.quick-opportunities .score-number{font-size:14px;font-weight:950}

/* V3.4 — score colors are set inline after every render, never forced white. */
.quick-opportunities .score-number,
.opp-score.score-number{
  font-weight:950!important;
  transition:color .2s ease;
}

/* V3.5 — A/V and score use the same deterministic gradient. */
.quick-opportunities .av-icon,
.quick-opportunities .score-number,
.opp-score.score-number{
  transition:color .15s ease;
}
.quick-opportunities .av-icon{font-size:13px;font-weight:950}

/* V3.6 — do not let generic typography rules override score colors. */
.quick-opportunities .av-icon,
.quick-opportunities .score-number,
.opp-score.score-number{
  color:inherit;
  -webkit-text-fill-color:inherit;
  font-weight:950!important;
}

.real-status{color:#36e0a0!important;font-weight:800}
.demo-status{color:#ff9b4a!important;font-weight:800}

/* V4.3 — graphiques réels interactifs */
.chart-shell{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:12px;margin:15px 0}
.chart-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}
.chart-readout{display:flex;align-items:baseline;gap:10px;min-height:34px}
.chart-readout b{font-size:19px}
.chart-readout span{font-size:11px;color:var(--muted)}
.chart-ranges{display:flex;gap:5px}
.chart-range{border:1px solid var(--line);background:var(--panel2);color:var(--muted);border-radius:9px;padding:6px 9px;font-size:11px;font-weight:800;cursor:pointer}
.chart-range.active{color:var(--text);border-color:var(--accent);background:var(--accent-bg)}
.chart-viewport{position:relative;height:300px;min-height:220px}
.chart-viewport svg{width:100%;height:100%;display:block;overflow:visible}
.chart-grid{stroke:var(--line);stroke-width:1;opacity:.55}
.chart-axis{fill:var(--muted);font-size:11px}
.chart-line{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.chart-point{fill:var(--accent);stroke:var(--panel);stroke-width:2;cursor:pointer;transition:r .12s ease}
.chart-point:hover,.chart-point:focus{r:7;outline:none}
.chart-tooltip{position:absolute;z-index:5;pointer-events:none;background:var(--panel2);border:1px solid var(--accent);border-radius:9px;padding:7px 9px;display:flex;flex-direction:column;gap:2px;box-shadow:0 8px 20px rgba(0,0,0,.25);white-space:nowrap}
.chart-tooltip strong{font-size:13px}.chart-tooltip span{font-size:10px;color:var(--muted)}
.chart-help{font-size:11px;color:var(--muted);padding-top:6px}
.chart-empty{height:100%;display:grid;place-items:center;color:var(--muted);text-align:center;padding:30px;font-size:13px}
@media(max-width:650px){.chart-viewport{height:260px}.chart-toolbar{align-items:flex-start}.chart-readout{width:100%}.chart-ranges{width:100%;justify-content:space-between}.chart-range{flex:1}.chart-help{font-size:10px}}


/* V4.4 — Mes actifs en liste + vrais graphiques 7 jours sur l'accueil */
.asset-list{display:grid;gap:8px}
.asset-list-row{display:grid;grid-template-columns:minmax(190px,1.25fr) minmax(130px,.8fr) 110px minmax(180px,1.2fr);align-items:center;gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:11px 13px;cursor:pointer;transition:border-color .15s,transform .15s}
.asset-list-row:hover{border-color:#3a444f;transform:translateY(-1px)}
.asset-list-row.threshold-below{border:2px solid var(--red);box-shadow:0 0 0 1px rgba(255,91,104,.08)}
.asset-list-row.threshold-above{border:2px solid var(--green);box-shadow:0 0 0 1px rgba(56,211,159,.08)}
.asset-list-main{display:flex;justify-content:space-between;align-items:center;gap:10px;min-width:0}
.asset-list-price{display:flex;align-items:baseline;gap:8px;white-space:nowrap}.asset-list-price strong{font-size:18px}.asset-list-price span{font-size:12px}
.asset-list-scores{display:flex;gap:12px;justify-content:flex-end}.av-score{font-size:13px;font-weight:900;white-space:nowrap}.av-score .av-icon{font-size:13px}
.asset-list-chart{height:54px;min-width:0}.asset-list-chart svg{width:100%;height:100%;display:block}.asset-list-chart polyline{stroke:var(--text);stroke-width:2.4}
.asset-list-range{grid-column:4;display:flex;justify-content:space-between;color:var(--muted);font-size:10px;margin-top:-9px}
.asset-list-row .asset-list-chart + .asset-list-range{margin-left:0}
.news-link{display:inline-block;margin-top:8px;color:var(--accent2);font-size:11px;font-weight:800;text-decoration:none}.news-link:hover{text-decoration:underline}
@media(max-width:850px){.asset-list-row{grid-template-columns:1.2fr .8fr 100px}.asset-list-chart{grid-column:1/-1;height:48px}.asset-list-range{grid-column:1/-1;margin-top:-8px}}
@media(max-width:600px){.asset-list-row{grid-template-columns:1fr auto;gap:7px 10px;padding:11px}.asset-list-main{grid-column:1/-1}.asset-list-price{grid-column:1}.asset-list-scores{grid-column:2;grid-row:2}.asset-list-chart{grid-column:1/-1;height:50px}.asset-list-range{grid-column:1/-1}.asset-list-price strong{font-size:17px}}

/* V4.5 — accueil : séparation nette Crypto / Bourse, tout en gardant la liste */
.asset-group{margin:0 0 24px}
.asset-group:last-child{margin-bottom:0}
.asset-group-head{
  display:flex;align-items:center;justify-content:space-between;
  margin:0 0 10px;padding:0 2px;
}
.asset-group-head h3{margin:0;font-size:16px;font-weight:850}
.asset-group-head span{font-size:11px;color:var(--muted)}
.asset-group .asset-list{display:grid;gap:10px}
.asset-list-row{grid-template-columns:minmax(170px,1.25fr) minmax(150px,.9fr) 120px minmax(220px,1.35fr)}
@media(max-width:820px){
  .asset-list-row{grid-template-columns:1fr auto;gap:8px}
  .asset-list-main{grid-column:1/-1}
  .asset-list-scores{justify-content:flex-start}
  .asset-list-chart{grid-column:1/-1}
}
@media(max-width:560px){
  .asset-list-row{padding:12px}
  .asset-list-chart{height:48px}
}

/* V4.5 — suggestions d'actifs */
.asset-add{align-items:flex-start}
.asset-search-wrap{position:relative;flex:1;min-width:220px}
.asset-search-wrap>input{width:100%}
.asset-suggestions{
  position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:30;
  background:#151a20;border:1px solid var(--line);border-radius:14px;
  padding:6px;box-shadow:0 18px 45px rgba(0,0,0,.45);
  max-height:320px;overflow:auto;
}
.asset-suggestion{
  width:100%;display:flex;align-items:center;gap:12px;text-align:left;
  background:transparent;border:0;border-radius:10px;padding:10px 11px;
}
.asset-suggestion:hover{background:#20262d}
.asset-suggestion b{width:58px;font-size:13px}
.asset-suggestion span{font-size:12px;color:var(--muted)}
.suggestion-empty{padding:11px;color:var(--muted);font-size:12px}
.asset-add-hint{margin:7px 2px 0}
@media(max-width:650px){
  .asset-add{display:grid;grid-template-columns:1fr 1fr}
  .asset-search-wrap{grid-column:1/-1}
  .asset-add .primary{width:100%}
}

/* V4.6 — cartes accueil : même langage visuel que les anciennes cards,
   mais en liste comme demandé. Le graphique est réel 7J et non éditable. */
.asset-group{margin:0 0 28px}
.asset-group + .asset-group{padding-top:2px}
.asset-group-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}
.asset-group-head h3{font-size:17px;margin:0;font-weight:900}
.asset-group-head span{font-size:11px;color:var(--muted)}
.asset-list{display:grid;gap:10px}

.asset-list-row{
  position:relative;
  display:grid;
  grid-template-columns:minmax(190px,1.25fr) minmax(150px,.8fr) 120px minmax(260px,1.35fr);
  grid-template-rows:auto auto;
  align-items:center;
  column-gap:16px;
  row-gap:5px;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:14px 15px 11px;
  min-height:104px;
  cursor:pointer;
  transition:transform .15s,border-color .15s,box-shadow .15s;
}
.asset-list-row:hover{transform:translateY(-1px);border-color:#3a444f}
.asset-list-row.threshold-below{border:2px solid var(--red);box-shadow:0 0 18px rgba(255,91,104,.08)}
.asset-list-row.threshold-above{border:2px solid var(--green);box-shadow:0 0 18px rgba(56,211,159,.08)}

.asset-list-main{display:flex;justify-content:space-between;align-items:center;gap:10px;min-width:0;grid-column:1}
.asset-list-main .ticker{font-size:18px}
.asset-list-main .name{margin-top:3px}
.asset-list-price{display:flex;align-items:baseline;gap:8px;white-space:nowrap;grid-column:2}
.asset-list-price strong{font-size:22px;font-weight:900}
.asset-list-price span{font-size:12px}
.asset-list-scores{display:flex;gap:10px;justify-content:flex-start;grid-column:3;white-space:nowrap}
.av-score{font-size:13px;font-weight:900}
.av-score .av-icon{font-size:14px}
.asset-list-chart{grid-column:4;grid-row:1/3;height:66px;min-width:0;color:#f0f2f5}
.asset-list-chart svg{width:100%;height:100%;display:block}
.weekly-home-chart{height:100%;display:flex;flex-direction:column;justify-content:center;gap:2px}
.weekly-home-chart svg{height:54px}
.weekly-home-axis{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:9px;white-space:nowrap}
.asset-list-range{
  grid-column:1/4;
  display:flex;
  justify-content:space-between;
  align-items:center;
  font-size:10px;
  color:var(--muted);
  padding-top:2px;
}
.chart-no-data{height:100%;display:grid;place-items:center;color:var(--muted);font-size:10px}

@media(max-width:900px){
  .asset-list-row{grid-template-columns:minmax(160px,1fr) minmax(130px,.8fr) 100px}
  .asset-list-chart{grid-column:1/-1;grid-row:auto;height:58px}
  .asset-list-range{grid-column:1/-1}
}
@media(max-width:620px){
  .asset-list-row{grid-template-columns:1fr auto;padding:13px;row-gap:8px}
  .asset-list-main{grid-column:1/-1}
  .asset-list-price{grid-column:1}
  .asset-list-scores{grid-column:2}
  .asset-list-chart{grid-column:1/-1;height:62px}
  .asset-list-range{grid-column:1/-1}
  .weekly-home-axis{font-size:8px}
}

/* V4.7 — accueil : retour aux cards compactes, comme la mise en forme d'origine */
.asset-group{margin:0 0 26px}
.asset-group-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px}
.asset-group-head h3{margin:0;font-size:17px;font-weight:900}
.asset-group-head span{font-size:11px;color:var(--muted)}
.asset-list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:12px;
}
.asset-card{
  position:relative;
  min-width:0;
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:12px;
  padding:14px 15px;
  cursor:pointer;
  transition:transform .15s,border-color .15s,box-shadow .15s;
}
.asset-card:hover{transform:translateY(-2px);border-color:#3a444f}
.asset-card.threshold-below{border:2px solid var(--red);box-shadow:0 0 18px rgba(255,91,104,.08)}
.asset-card.threshold-above{border:2px solid var(--green);box-shadow:0 0 18px rgba(56,211,159,.08)}
.asset-top,.asset-price,.range{display:flex;justify-content:space-between;align-items:center;gap:10px}
.asset-price{margin-top:5px}
.asset-price .price{margin:8px 0 1px}
.asset-card-scores{display:flex;gap:9px;white-space:nowrap}
.asset-card .mini-chart{height:58px;margin:8px -3px 4px}
.asset-card .mini-chart svg{width:100%;height:100%;display:block}
.asset-card .weekly-home-chart{height:100%;display:flex;flex-direction:column;justify-content:center;gap:1px}
.asset-card .weekly-home-chart svg{height:48px}
.asset-card .weekly-home-axis{display:none}
.asset-card .range{font-size:10px;color:var(--muted)}
.asset-card .range-bar{height:5px}
@media(max-width:900px){.asset-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:580px){.asset-list{grid-template-columns:1fr}.asset-card{min-height:190px}}
