/* ── CE Design Tokens ─────────────────────────────────────── */
:root{
  --ce-navy:       #1f2d3f;
  --ce-navy-dark:  #17222f;
  --ce-navy-light: #253345;
  --ce-orange:     #f55420;
  --ce-orange-h:   #e04318;
  --ce-orange-lt:  rgba(245,84,32,.1);
  --ce-orange-ltr: rgba(245,84,32,.06);
  --white:         #ffffff;
  --bg:            #f5f6fa;
  --border:        #e8eaed;
  --border-dark:   #d0d3da;
  --text:          #1f2d3f;
  --text-mid:      #5b6a7e;
  --text-dim:      #8e99a8;
  --green:         #52c41a;
  --green-bg:      rgba(82,196,26,.08);
  --green-light:   #f6ffed;
  --green-border:  #b7eb8f;
  --green-dark:    #389e0d;
  --red:           #f5222d;
  --red-bg:        rgba(245,34,45,.08);
  --red-light:     #fff2f0;
  --red-medium:    #ff4d4f;
  --red-border:    #ffccc7;
  --red-dark:      #cf1322;
  --red-muted:     #ff8a8a;
  --red-pale:      #ffd7d7;
  --gold:          #faad14;
  --gold-bg:       rgba(250,173,20,.08);
  --gold-light:    #fffbe6;
  --gold-border:   #ffe58f;
  --gold-dark:     #d48806;
  --gold-text:     #8b6914;
  --blue:          #1890ff;
  --blue-light:    #e6f4ff;
  --blue-border:   #91caff;
  --blue-dark:     #0958d9;
  --slider-green:  #1d7c68;
  --slider-orange: #cb5f2d;
  --slider-gold:   #cf9d2e;
  --shadow-sm:     0 1px 4px rgba(0,0,0,.08);
  --shadow-md:     0 2px 12px rgba(0,0,0,.10);
  --shadow-lg:     0 4px 24px rgba(0,0,0,.13);
  --radius:        4px;
  --radius-lg:     8px;
}

*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Poppins',sans-serif;font-size:13px;background:var(--bg);color:var(--text);height:100vh;overflow:hidden;display:flex;flex-direction:column}
#app{display:flex;flex-direction:column;flex:1;overflow:hidden;min-height:0}

/* ── Top bar ─────────────────────────────────────────────── */
.topbar{
  height:56px;background:var(--ce-navy);flex-shrink:0;
  display:flex;align-items:center;padding:0 20px;gap:14px;
  box-shadow:0 2px 8px rgba(0,0,0,.25)
}
.topbar-logo{display:flex;align-items:center;gap:9px;text-decoration:none}
.topbar-logo-icon{
  width:32px;height:32px;background:var(--ce-orange);border-radius:6px;
  display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:700;color:#fff;letter-spacing:-.5px;flex-shrink:0
}
.topbar-title{font-size:15px;font-weight:600;color:#fff;letter-spacing:-.2px}
.topbar-subtitle{font-size:11px;color:rgba(255,255,255,.5);font-weight:400;margin-left:2px}
.topbar-sep{flex:1}
.topbar-badge{
  font-size:10px;font-weight:500;padding:3px 10px;border-radius:12px;
  background:rgba(255,255,255,.1);color:rgba(255,255,255,.7);
  border:1px solid rgba(255,255,255,.15)
}
.topbar-user{
  width:32px;height:32px;border-radius:50%;background:var(--ce-orange);
  display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:600;color:#fff;cursor:pointer
}

/* ── Layout ──────────────────────────────────────────────── */
.layout{display:flex;flex:1;overflow:hidden}

/* ── Left sidebar ────────────────────────────────────────── */
.sidebar{
  width:288px;flex-shrink:0;background:var(--ce-navy);
  display:flex;flex-direction:column;overflow:hidden;
  border-right:1px solid rgba(255,255,255,.06)
}
.sidebar-inner{flex:1;overflow-y:auto;padding:16px 14px;display:flex;flex-direction:column;gap:14px}
.sidebar-inner::-webkit-scrollbar{width:4px}
.sidebar-inner::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:2px}

.s-section{display:flex;flex-direction:column;gap:6px}
.s-label{font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.4);padding:0 2px}
.s-input{
  width:100%;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);
  border-radius:var(--radius);padding:8px 10px;color:#fff;
  font-family:'Poppins',sans-serif;font-size:12px;outline:none;transition:.2s
}
.s-input:focus{border-color:var(--ce-orange);background:rgba(255,255,255,.1)}
.s-input::placeholder{color:rgba(255,255,255,.3)}
.s-input-wrap{position:relative}
.s-input-wrap input{padding-right:32px}
.s-eye{position:absolute;right:9px;top:50%;transform:translateY(-50%);cursor:pointer;color:rgba(255,255,255,.3);font-size:13px;transition:.15s}
.s-eye:hover{color:rgba(255,255,255,.7)}

.s-divider{border:none;border-top:1px solid rgba(255,255,255,.08);margin:2px -14px}

/* Select / dropdown in sidebar */
.s-select{
  width:100%;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);
  border-radius:var(--radius);padding:8px 10px;color:#fff;
  font-family:'Poppins',sans-serif;font-size:12px;outline:none;transition:.2s;
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='rgba(255,255,255,.4)' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;
  cursor:pointer
}
.s-select:focus{border-color:var(--ce-orange);background:rgba(255,255,255,.1)}
.s-select option{background:var(--ce-navy);color:#fff}

/* Radio / toggle group in sidebar */
.s-radio-group{display:flex;gap:6px}
.s-radio-label{
  flex:1;display:flex;align-items:center;gap:6px;font-size:11px;cursor:pointer;
  padding:7px 10px;border-radius:var(--radius);
  border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);
  color:rgba(255,255,255,.7);transition:.2s;user-select:none
}
.s-radio-label:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2)}
.s-radio-label.active{
  border-color:var(--ce-orange);background:var(--ce-orange-ltr);color:#fff
}
.s-radio-label input[type="radio"]{
  accent-color:var(--ce-orange);margin:0;width:13px;height:13px;flex-shrink:0
}

/* Connect button */
.btn-connect{
  width:100%;padding:9px 14px;border:none;border-radius:var(--radius);
  background:var(--ce-orange);color:#fff;font-family:'Poppins',sans-serif;
  font-size:12px;font-weight:600;cursor:pointer;transition:.2s;
  display:flex;align-items:center;justify-content:center;gap:7px
}
.btn-connect:hover:not(:disabled){background:var(--ce-orange-h)}
.btn-connect:disabled{opacity:.4;cursor:not-allowed}
.btn-connect.connected{background:rgba(82,196,26,.15);color:var(--green);border:1px solid rgba(82,196,26,.3)}
.btn-secondary{
  width:100%;padding:8px 12px;border:1px solid rgba(255,255,255,.14);border-radius:var(--radius);
  background:rgba(255,255,255,.04);color:rgba(255,255,255,.78);font-family:'Poppins',sans-serif;
  font-size:11px;font-weight:600;cursor:pointer;transition:.2s
}
.btn-secondary:hover{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.22)}
.btn-secondary[hidden]{display:none}

/* Variante claire : quand .btn-secondary est utilisé dans un contexte
   à fond clair (dashboard, topbar light, content), le texte blanc sur
   blanc devient illisible. On force un rendu dark-on-light. */
.dashboard-content .btn-secondary:not(.btn-danger),
.topbar .btn-secondary:not(.btn-danger),
.dashboard-header .btn-secondary:not(.btn-danger){
  background:#fff;color:var(--text);border-color:var(--border)
}
.dashboard-content .btn-secondary:not(.btn-danger):hover,
.topbar .btn-secondary:not(.btn-danger):hover,
.dashboard-header .btn-secondary:not(.btn-danger):hover{
  background:var(--bg);color:var(--text);border-color:var(--text-mid)
}
.s-help{
  font-size:10px;line-height:1.6;color:rgba(255,255,255,.5);
  padding:8px 10px;border-radius:var(--radius);background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.06)
}
.s-inline-actions{display:flex;flex-direction:column;gap:6px}
.s-status{
  display:none;padding:9px 10px;border-radius:var(--radius);background:rgba(82,196,26,.09);
  border:1px solid rgba(82,196,26,.22);font-size:10px;line-height:1.5;color:rgba(255,255,255,.8)
}
.s-status.on{display:block}
.s-status strong{color:#fff;font-weight:600}

/* Portfolio list */
.pf-list{display:flex;flex-direction:column;gap:5px;max-height:300px;overflow-y:auto}
.pf-list::-webkit-scrollbar{width:3px}
.pf-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
.pf-item{
  padding:9px 11px;border-radius:var(--radius);cursor:pointer;
  border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.04);
  transition:.15s
}
.pf-item:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.15)}
.pf-item.selected{background:var(--ce-orange-ltr);border-color:var(--ce-orange);border-left:3px solid var(--ce-orange)}
.pf-name{font-size:12px;font-weight:500;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-meta{font-size:10px;color:rgba(255,255,255,.4);margin-top:3px;display:flex;gap:6px;flex-wrap:wrap}
.pf-badge{
  background:rgba(255,255,255,.1);border-radius:10px;
  padding:1px 7px;font-size:9px;color:rgba(255,255,255,.6)
}
.pf-badge.orange{background:rgba(245,84,32,.2);color:var(--ce-orange)}
.pf-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.btn-secondary.btn-danger{border-color:rgba(245,34,45,.22);color:var(--red-muted)}
.btn-secondary.btn-danger:hover{background:rgba(245,34,45,.12);color:var(--red-pale);border-color:rgba(245,34,45,.35)}
/* ── Portfolio Modal Overlay ─────────────────────────────── */
.pf-modal-overlay{
  display:none;position:fixed;inset:0;z-index:9000;
  background:rgba(15,20,28,.65);backdrop-filter:blur(4px);
  align-items:center;justify-content:center;padding:24px
}
.pf-modal-overlay.on{display:flex}
.pf-modal{
  background:var(--white);border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.3),0 0 0 1px var(--border);
  width:100%;max-width:860px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;
  font-family:'Poppins',sans-serif
}
.pf-modal-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 24px;border-bottom:1px solid var(--border);flex-shrink:0
}
.pf-modal-header h2{font-size:15px;font-weight:600;color:var(--ce-navy);margin:0}
.pf-modal-close{
  width:32px;height:32px;border-radius:6px;border:none;background:transparent;
  font-size:18px;color:var(--text-dim);cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:.15s
}
.pf-modal-close:hover{background:var(--bg);color:var(--text)}
.pf-modal-body{flex:1;overflow-y:auto;padding:20px 24px}
.pf-modal-footer{
  display:flex;align-items:center;justify-content:flex-end;gap:10px;
  padding:14px 24px;border-top:1px solid var(--border);flex-shrink:0
}
.pf-modal-footer .btn-save{
  padding:8px 24px;border:none;border-radius:var(--radius);
  background:var(--ce-orange);color:#fff;font-family:'Poppins',sans-serif;
  font-size:12px;font-weight:600;cursor:pointer;transition:.2s
}
.pf-modal-footer .btn-save:hover{background:var(--ce-orange-h);box-shadow:0 2px 8px rgba(245,84,32,.35)}
.pf-modal-footer .btn-save:disabled{opacity:.4;cursor:not-allowed}
.pf-modal-footer .btn-cancel{
  padding:8px 16px;border:1px solid var(--border);border-radius:var(--radius);
  background:var(--white);color:var(--text);font-family:'Poppins',sans-serif;
  font-size:12px;font-weight:500;cursor:pointer;transition:.15s
}
.pf-modal-footer .btn-cancel:hover{background:var(--bg)}

/* Modal form fields */
.pf-field{margin-bottom:14px}
.pf-field label{display:block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);margin-bottom:5px}
.pf-field input[type="text"],.pf-field textarea{
  width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);
  font-family:'Poppins',sans-serif;font-size:12px;color:var(--text);background:#fff;
  outline:none;transition:border-color .15s
}
.pf-field input[type="text"]:focus,.pf-field textarea:focus{border-color:var(--ce-orange)}
.pf-field .pf-check{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-mid);cursor:pointer}
.pf-field .pf-check input{accent-color:var(--ce-orange)}

/* Add fund row */
.pf-add-row{
  display:grid;grid-template-columns:120px 1fr 90px 90px 36px;gap:8px;align-items:start;
  margin-bottom:12px
}
.pf-add-row input{
  padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);
  font-family:'Poppins',sans-serif;font-size:11px;color:var(--text);background:#fff;
  outline:none;transition:border-color .15s;box-sizing:border-box;width:100%
}
.pf-add-row input:focus{border-color:var(--ce-orange)}
.pf-add-row input.valid{border-color:var(--green);background:var(--green-light)}
.pf-add-row input.invalid{border-color:var(--red-medium);background:var(--red-light)}
.pf-add-row input.checking{border-color:var(--gold);background:var(--gold-light)}
.pf-add-row .pf-add-name{
  font-size:10px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  min-height:16px;padding:0 2px
}
.pf-add-btn{
  width:36px;height:36px;border-radius:var(--radius);border:1px solid var(--border);
  background:var(--white);color:var(--ce-orange);font-size:18px;font-weight:700;
  cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s
}
.pf-add-btn:hover{background:var(--ce-orange);color:#fff;border-color:var(--ce-orange)}
.pf-add-btn:disabled{opacity:.3;cursor:not-allowed}

/* Fund table in modal */
.pf-table{width:100%;border-collapse:collapse;font-size:11px}
.pf-table thead th{
  text-align:left;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;
  color:var(--text-dim);padding:6px 8px;border-bottom:2px solid var(--border);
  position:sticky;top:0;background:var(--white);z-index:1
}
.pf-table thead th:nth-child(3),.pf-table thead th:nth-child(4){text-align:right}
.pf-table tbody tr{border-bottom:1px solid var(--border);transition:background .1s}
.pf-table tbody tr:hover{background:var(--bg)}
.pf-table td{padding:8px;vertical-align:middle}
.pf-table .pf-cell-isin{font-family:ui-monospace,SFMono-Regular,monospace;font-size:10px;color:var(--text-mid)}
.pf-table .pf-cell-name{font-weight:500;color:var(--text);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pf-table .pf-cell-meta{font-size:9px;color:var(--text-dim);margin-top:1px}
.pf-table .pf-cell-alloc,.pf-table .pf-cell-value{text-align:right}
.pf-table .pf-cell-alloc input,.pf-table .pf-cell-value input{
  width:68px;padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius);
  font-family:'Poppins',sans-serif;font-size:11px;color:var(--text);text-align:right;
  background:#fff;outline:none;transition:border-color .15s
}
.pf-table .pf-cell-alloc input:focus,.pf-table .pf-cell-value input:focus{border-color:var(--ce-orange)}
.pf-table .pf-cell-actions{text-align:center;width:36px}
.pf-table .pf-remove-btn{
  width:24px;height:24px;border-radius:4px;border:none;background:transparent;
  color:var(--text-dim);font-size:14px;cursor:pointer;transition:.15s;display:inline-flex;
  align-items:center;justify-content:center
}
.pf-table .pf-remove-btn:hover{background:var(--red-light);color:var(--red-medium)}

/* Empty state */
.pf-empty-state{
  padding:32px 20px;text-align:center;color:var(--text-dim);
  border:2px dashed var(--border);border-radius:8px;margin:8px 0
}
.pf-empty-state .pf-empty-icon{font-size:28px;margin-bottom:8px;opacity:.4}
.pf-empty-state p{font-size:11px;margin:4px 0;line-height:1.5}

/* Total bar */
.pf-total-bar{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 12px;background:var(--bg);border-radius:var(--radius);margin:10px 0;
  font-size:11px;color:var(--text-mid)
}
.pf-total-bar strong{font-weight:700;color:var(--text)}
.pf-total-bar.warn strong{color:var(--gold-dark)}
.pf-total-bar.ok strong{color:var(--green)}

/* Import section in modal */
.pf-import-toggle{
  display:flex;align-items:center;gap:6px;padding:8px 0;cursor:pointer;
  font-size:11px;font-weight:500;color:var(--ce-orange);border:none;background:none;
  font-family:'Poppins',sans-serif
}
.pf-import-toggle:hover{text-decoration:underline}
.pf-import-section{display:none;margin-top:6px}
.pf-import-section.on{display:block}
.pf-import-section textarea{
  width:100%;min-height:80px;resize:vertical;padding:8px 10px;
  font-family:ui-monospace,SFMono-Regular,monospace;font-size:10px;
  border:1px solid var(--border);border-radius:var(--radius);color:var(--text);
  background:#fff;outline:none
}
.pf-import-section textarea:focus{border-color:var(--ce-orange)}
.pf-import-actions{display:flex;gap:8px;margin-top:6px}
.pf-import-actions button{
  padding:6px 14px;border:1px solid var(--border);border-radius:var(--radius);
  font-family:'Poppins',sans-serif;font-size:10px;font-weight:500;cursor:pointer;
  background:var(--white);color:var(--text);transition:.15s
}
.pf-import-actions button:hover{background:var(--bg)}
.pf-import-actions button.primary{background:var(--ce-orange);color:#fff;border-color:var(--ce-orange)}
.pf-import-actions button.primary:hover{background:var(--ce-orange-h)}

/* Status in modal */
.pf-modal-status{
  padding:8px 12px;border-radius:var(--radius);font-size:10px;line-height:1.5;
  margin-bottom:10px;display:none
}
.pf-modal-status.info{display:block;background:var(--blue-light);border:1px solid var(--blue-border);color:var(--blue-dark)}
.pf-modal-status.success{display:block;background:var(--green-light);border:1px solid var(--green-border);color:var(--green-dark)}
.pf-modal-status.error{display:block;background:var(--red-light);border:1px solid var(--red-border);color:var(--red-dark)}

/* ISIN validation indicator */
.pf-isin-status{font-size:12px;margin-left:4px}
.pf-isin-status.ok{color:var(--green)}
.pf-isin-status.fail{color:var(--red-medium)}
.pf-isin-status.loading{color:var(--gold);animation:spin .7s linear infinite;display:inline-block}

/* Legacy crud-panel (keep for backward compat, hidden) */
.crud-panel{
  display:none;gap:8px;padding:10px;border-radius:var(--radius);
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)
}
.crud-panel.on{display:flex;flex-direction:column}
.crud-title{font-size:11px;font-weight:600;color:#fff}
.crud-row{display:flex;gap:6px}
.crud-row > *{flex:1}
.crud-check{
  display:flex;align-items:center;gap:8px;font-size:11px;color:rgba(255,255,255,.72);
  line-height:1.4;padding:2px 1px
}
.crud-check input{accent-color:var(--ce-orange)}
.s-status.info{display:block;background:rgba(24,144,255,.12);border-color:rgba(24,144,255,.28);color:rgba(255,255,255,.82)}
.s-status.success{display:block;background:rgba(82,196,26,.09);border-color:rgba(82,196,26,.22);color:rgba(255,255,255,.82)}
.s-status.error{display:block;background:rgba(245,34,45,.1);border-color:rgba(245,34,45,.25);color:#ffd5d6}
.crud-subtitle{font-size:10px;line-height:1.5;color:rgba(255,255,255,.55)}
.fund-search{display:grid;grid-template-columns:minmax(0,1fr) 84px;gap:6px}
.fund-import{display:flex;flex-direction:column;gap:6px}
.fund-import textarea{
  min-height:92px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace
}
.fund-import-help{font-size:10px;line-height:1.5;color:rgba(255,255,255,.45)}
.fund-batch{display:flex;flex-direction:column;gap:6px}
.fund-batch textarea{
  min-height:160px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace
}
.fund-batch-top{display:grid;grid-template-columns:120px minmax(0,1fr) 140px;gap:6px}
.fund-search-results,.fund-list{
  display:flex;flex-direction:column;gap:6px;max-height:220px;overflow:auto
}
.fund-search-results::-webkit-scrollbar,.fund-list::-webkit-scrollbar{width:3px}
.fund-search-results::-webkit-scrollbar-thumb,.fund-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.15);border-radius:2px}
.fund-result,.fund-line{
  border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);
  background:rgba(255,255,255,.04);padding:8px 9px
}
.fund-result{display:flex;justify-content:space-between;gap:8px;align-items:center}
.fund-result-main{min-width:0}
.fund-result-name{font-size:11px;font-weight:500;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fund-result-meta{font-size:9px;color:rgba(255,255,255,.45);margin-top:2px}
.fund-line-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.fund-line-main{min-width:0}
.fund-line-name{font-size:11px;font-weight:500;color:#fff}
.fund-line-meta{font-size:9px;color:rgba(255,255,255,.45);margin-top:2px}
.fund-line-actions{display:flex;gap:6px;align-items:center}
.fund-line-actions .s-input{width:88px;text-align:right;padding-right:8px}
.fund-line-actions .btn-secondary{width:auto;min-width:72px;padding:8px 10px}
.fund-total{font-size:11px;color:rgba(255,255,255,.78);display:flex;justify-content:space-between;gap:8px}
.fund-total strong{color:#fff}
.fund-total.warn strong{color:#ffd666}
.fund-empty{padding:10px;border:1px dashed rgba(255,255,255,.12);border-radius:var(--radius);font-size:10px;line-height:1.5;color:rgba(255,255,255,.45)}
#p1 #portfolioEditor{
  margin:14px 20px 0;background:var(--white);border:1px solid var(--border);
  box-shadow:var(--shadow-sm)
}
#p1 #portfolioEditor .crud-title{color:var(--text)}
#p1 #portfolioEditor .crud-subtitle{color:var(--text-dim)}
#p1 #portfolioEditor .crud-check{color:var(--text-mid)}
#p1 #portfolioEditor .s-input{
  background:#fff;border-color:var(--border-dark);color:var(--text)
}
#p1 #portfolioEditor .s-input::placeholder{color:#9aa5b1}
#p1 #portfolioEditor .fund-import-help{color:var(--text-dim)}
#p1 #portfolioEditor .fund-result,
#p1 #portfolioEditor .fund-line{background:#fff;border-color:var(--border)}
#p1 #portfolioEditor .fund-result-name,
#p1 #portfolioEditor .fund-line-name{color:var(--text)}
#p1 #portfolioEditor .fund-result-meta,
#p1 #portfolioEditor .fund-line-meta{color:var(--text-dim)}
#p1 #portfolioEditor .fund-total{color:var(--text-mid)}
#p1 #portfolioEditor .fund-total strong{color:var(--text)}
#p1 #portfolioEditor .fund-total.warn strong{color:var(--gold-dark)}
#p1 #portfolioEditor .fund-empty{border-color:var(--border);color:var(--text-dim);background:var(--bg)}

/* Analyse button */
.btn-analyse{
  width:100%;padding:10px 14px;border:none;border-radius:var(--radius);
  background:var(--ce-orange);color:#fff;font-family:'Poppins',sans-serif;
  font-size:12px;font-weight:600;cursor:pointer;transition:.2s;letter-spacing:.02em
}
.btn-analyse:hover:not(:disabled){background:var(--ce-orange-h);box-shadow:0 2px 8px rgba(245,84,32,.4)}
.btn-analyse:active:not(:disabled){transform:scale(.98)}
.btn-analyse:disabled{opacity:.35;cursor:not-allowed}

/* Stats */
.stats-block{background:rgba(255,255,255,.05);border-radius:var(--radius);overflow:hidden;display:none}
.stats-block.on{display:block}
.stat-row{display:flex;justify-content:space-between;align-items:center;padding:7px 11px;border-bottom:1px solid rgba(255,255,255,.07)}
.stat-row:last-child{border:none}
.stat-k{font-size:10px;color:rgba(255,255,255,.5);font-weight:400}
.stat-v{font-size:12px;font-weight:600;color:#fff}
.stat-v.orange{color:var(--ce-orange)}
.stat-v.green{color:var(--green)}

/* Export buttons */
.exports{display:none;gap:5px}
.exports.on{display:flex}
.btn-exp{
  flex:1;padding:7px 4px;background:rgba(255,255,255,.06);color:rgba(255,255,255,.7);
  border:1px solid rgba(255,255,255,.12);border-radius:var(--radius);
  font-family:'Poppins',sans-serif;font-size:10px;cursor:pointer;transition:.15s
}
.btn-exp:hover{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.25)}

/* Progress */
.prog{
  display:none;align-items:center;gap:9px;
  background:rgba(255,255,255,.06);border-radius:var(--radius);padding:9px 11px
}
.prog.on{display:flex}
.spin{width:14px;height:14px;border:2px solid rgba(255,255,255,.15);border-top-color:var(--ce-orange);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
.prog-wrap{flex:1}
.prog-txt{font-size:11px;color:rgba(255,255,255,.8);font-weight:500}
.prog-sub{font-size:9px;color:rgba(255,255,255,.4);margin-top:1px}
.prog-banner{display:none;width:100%;background:var(--ce-navy);padding:0;z-index:200;flex-shrink:0}
.prog-banner.on{display:block}
.prog-banner .prog{margin:0;padding:8px 20px;border-radius:0}
.prog-banner .pbar-wrap{border-radius:0;margin:0}
.pbar-wrap{height:3px;background:rgba(255,255,255,.1);border-radius:1px;overflow:hidden;display:none}
.pbar-wrap.on{display:block}
.pbar{height:100%;background:var(--ce-orange);transition:width .3s;border-radius:1px}

/* Error */
.err{display:none;background:rgba(245,34,45,.1);border:1px solid rgba(245,34,45,.25);border-radius:var(--radius);padding:9px 11px;color:var(--red-medium);font-size:11px;line-height:1.5}
.err.on{display:block}

/* ── Main content ─────────────────────────────────────────── */
.content{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}

/* Empty state */
.empty{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:16px;color:var(--text-dim);text-align:center;padding:40px
}
.empty-icon{width:64px;height:64px;background:var(--ce-orange-lt);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:28px}
.empty h3{font-size:16px;font-weight:600;color:var(--text-mid)}
.empty p{font-size:13px;color:var(--text-dim);max-width:360px;line-height:1.7}
.empty-steps{display:flex;gap:24px;margin-top:8px;flex-wrap:wrap;justify-content:center}
.empty-step{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-mid)}
.empty-step-n{width:22px;height:22px;border-radius:50%;background:var(--ce-orange);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}

/* View tabs */
.view-tabs{display:none;flex-shrink:0;background:var(--white);border-bottom:1px solid var(--border);padding:0 20px;overflow-x:auto}
.view-tabs.on{display:flex}
.vtab{
  padding:13px 12px;font-size:11px;font-weight:500;color:var(--text-dim);
  cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;
  transition:.15s;white-space:nowrap;user-select:none
}
.vtab:hover{color:var(--ce-orange)}
.vtab.active{color:var(--ce-orange);border-bottom-color:var(--ce-orange)}
.vtab .cnt{
  display:inline-block;background:var(--bg);border:1px solid var(--border);
  border-radius:10px;padding:0 6px;font-size:10px;margin-left:4px;color:var(--text-dim)
}
.vtab.active .cnt{background:var(--ce-orange-lt);border-color:rgba(245,84,32,.2);color:var(--ce-orange)}

/* Panels */
.vpanel{display:none;flex-direction:column;overflow-y:auto;overflow-x:hidden;flex:1}
.vpanel.active{display:flex}
#p6.active{overflow-y:auto;overflow-x:hidden}
#p6 .tbl-wrap{flex:none;overflow-x:auto;overflow-y:visible;min-height:200px}

/* Toolbar */
.toolbar{
  padding:10px 20px;display:flex;align-items:center;gap:8px;
  background:var(--white);border-bottom:1px solid var(--border);flex-shrink:0
}
.toolbar-input{
  flex:1;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);
  padding:7px 10px;color:var(--text);font-family:'Poppins',sans-serif;font-size:12px;outline:none;transition:.2s
}
.toolbar-input:focus{border-color:var(--ce-orange);background:#fff}
.toolbar-input::placeholder{color:var(--text-dim)}
.toolbar-select{
  background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);
  padding:6px 10px;color:var(--text);font-family:'Poppins',sans-serif;font-size:11px;outline:none;cursor:pointer
}
.toolbar-btn{
  padding:6px 14px;background:var(--ce-orange-lt);color:var(--ce-orange);border:1px solid rgba(245,84,32,.25);
  border-radius:var(--radius);font-family:'Poppins',sans-serif;font-size:11px;font-weight:500;cursor:pointer;transition:.15s
}
.toolbar-btn:hover{background:var(--ce-orange);color:#fff}

/* Table */
.tbl-wrap{overflow:auto;flex:1}
.data-grid{width:100%;border-collapse:separate;border-spacing:0;white-space:nowrap;background:var(--white)}
.data-grid thead{position:sticky;top:0;z-index:2}
.data-grid thead tr:first-child th{background:var(--white)}
.data-grid th{
  padding:10px 14px 8px;font-size:10px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--text-dim);border-bottom:2px solid var(--border);text-align:right
}
.data-grid th.l{text-align:left}
.data-grid th.grp{
  background:var(--bg);font-size:9px;color:var(--ce-orange);
  border-bottom:none;border-top:1px solid var(--border);text-align:center;padding:6px 14px 4px
}
.data-grid tbody tr{border-bottom:1px solid var(--border);transition:.1s;cursor:pointer}
.data-grid tbody tr:hover{background:var(--bg)}
.data-grid td{padding:9px 14px;vertical-align:middle;font-size:12px;text-align:right}
.data-grid td.l{text-align:left}
/* Sticky columns */
.sticky-col{position:sticky;z-index:1;background:var(--white)}
.sticky-col-1{left:0;min-width:130px}
.sticky-col-2{left:130px;box-shadow:2px 0 4px rgba(0,0,0,.06)}
.data-grid thead .sticky-col{z-index:3}
.data-grid tbody tr:hover .sticky-col{background:var(--bg)}
.tisin{font-weight:600;letter-spacing:.04em;color:var(--ce-orange);font-size:12px}
.cc{font-size:9px;color:var(--text-dim);margin-left:3px;font-weight:400}
.tname{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:var(--text)}
.dim{color:var(--text-dim)}
.pos{color:var(--green)}
.neg{color:var(--red)}
.alloc-bar{
  display:inline-flex;align-items:center;gap:5px;white-space:nowrap
}
.alloc-pill{
  height:4px;border-radius:2px;background:var(--ce-orange);min-width:2px
}
.src-ce{background:var(--ce-orange-lt);color:var(--ce-orange);border:1px solid rgba(245,84,32,.2);border-radius:10px;padding:1px 7px;font-size:9px;font-weight:500}
.src-figi{background:var(--gold-bg);color:var(--gold);border:1px solid rgba(250,173,20,.2);border-radius:10px;padding:1px 7px;font-size:9px;font-weight:500}
.src-yahoo{background:#f0e6ff;color:#7b2ff7;border:1px solid rgba(123,47,247,.2);border-radius:10px;padding:1px 7px;font-size:9px;font-weight:500}
.src-none{color:var(--text-dim);font-size:10px}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block}
.d-ok{background:var(--green)} .d-err{background:var(--red)}
@keyframes pulse{0%,100%{opacity:.3}50%{opacity:1}}
.d-load{background:var(--text-dim);animation:pulse 1s infinite}

/* Analyse KPIs */
.kpi-row{
  display:grid;grid-template-columns:repeat(2,1fr);
  gap:12px;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--white)
}
@media(min-width:1100px){.kpi-row{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1400px){.kpi-row{grid-template-columns:repeat(4,1fr)}}
.kpi-card{
  background:var(--white);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:12px 16px;box-shadow:var(--shadow-sm)
}
.kpi-label{font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin-bottom:5px}
.kpi-value{font-size:20px;font-weight:700;color:var(--text)}
.kpi-value.orange{color:var(--ce-orange)}
.kpi-value.green{color:var(--green)}
.kpi-value.red{color:var(--red)}
.kpi-sub{font-size:10px;color:var(--text-dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}

/* Fees */
.fee-ok{color:var(--green);font-weight:500}
.fee-na{color:var(--text-dim)}
.fee-loading{color:var(--text-dim);animation:pulse 1s infinite}
.env-bar{
  display:none;padding:10px 20px;gap:14px;align-items:center;flex-wrap:wrap;
  border-bottom:1px solid var(--border);background:#fffbf8
}
.env-bar.on{display:flex}
.env-label{font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ce-orange)}
.env-field{display:flex;align-items:center;gap:5px}
.env-field span{font-size:11px;color:var(--text-mid)}
.env-input{
  width:65px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);
  padding:4px 7px;color:var(--text);font-family:'Poppins',sans-serif;font-size:11px;outline:none;transition:.15s
}
.env-input:focus{border-color:var(--ce-orange)}

/* VL history */
/* VL accordion */
.vl-panel{overflow-y:auto;flex:1;background:var(--white)}
.vl-row{border-bottom:1px solid var(--border)}
.vl-row-head{display:flex;align-items:center;gap:10px;padding:10px 20px;cursor:pointer;transition:.15s;user-select:none;border-left:3px solid transparent}
.vl-row-head:hover{background:var(--bg)}
.vl-row-head.open{background:rgba(245,84,32,.04);border-left-color:var(--ce-orange)}
.vl-row-isin{font-size:11px;font-weight:700;color:var(--ce-orange);letter-spacing:.03em;width:110px;flex-shrink:0}
.vl-row-name{font-size:11px;color:var(--text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vl-row-pts{font-size:10px;color:var(--text-dim);width:55px;text-align:right;flex-shrink:0}
.vl-row-date{font-size:10px;color:var(--text-dim);width:82px;text-align:right;flex-shrink:0}
.vl-row-vl{font-size:11px;font-weight:600;color:var(--text);width:82px;text-align:right;flex-shrink:0}
.vl-row-ytd{font-size:11px;font-weight:600;width:62px;text-align:right;flex-shrink:0}
.vl-row-chevron{font-size:13px;color:var(--text-dim);width:16px;flex-shrink:0;transition:transform .2s}
.vl-row-head.open .vl-row-chevron{transform:rotate(90deg);color:var(--ce-orange)}
.vl-row-body{display:none;border-top:1px solid var(--border);background:#fff}
.vl-row-body.open{display:block}
.vl-chart-stats{display:flex;gap:24px;padding:14px 20px 10px;flex-wrap:wrap;border-bottom:1px solid var(--border)}
.vl-stat{display:flex;flex-direction:column;gap:2px}
.vl-stat-label{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}
.vl-stat-value{font-size:13px;font-weight:600;color:var(--text)}
.vl-chart-wrap{padding:14px 20px 10px}

/* Drawer */
.drawer{display:none;position:absolute;right:0;top:0;bottom:0;width:360px;background:var(--white);border-left:1px solid var(--border);z-index:10;overflow-y:auto;padding:0;flex-direction:column;box-shadow:var(--shadow-lg)}
.drawer.open{display:flex}
.drawer-head{padding:16px 18px;border-bottom:1px solid var(--border);position:relative;background:var(--ce-navy)}
.drawer-head h2{font-size:14px;font-weight:700;color:#fff;padding-right:28px;font-family:'Poppins',sans-serif}
.drawer-head p{font-size:10px;color:rgba(255,255,255,.5);margin-top:2px}
.drawer-close{position:absolute;top:12px;right:14px;cursor:pointer;color:rgba(255,255,255,.5);font-size:16px;transition:.15s}
.drawer-close:hover{color:#fff}
.drawer-body{padding:14px 16px;display:flex;flex-direction:column;gap:0}
.dsec{font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ce-orange);padding:12px 0 6px;border-bottom:1px solid var(--border);margin-bottom:2px}
.drow{display:flex;justify-content:space-between;align-items:baseline;padding:6px 0;border-bottom:1px solid rgba(232,234,237,.5)}
.drow:last-child{border:none}
.dk{font-size:11px;color:var(--text-dim);flex-shrink:0;margin-right:8px}
.dv{font-size:12px;font-weight:500;text-align:right;word-break:break-word}
.dv.g{color:var(--green)} .dv.a{color:var(--ce-orange)} .dv.r{color:var(--red)}

/* Rank */
.rank-1{color:var(--ce-orange);font-weight:700}
.rank-bot{color:var(--red)}
.dici-layout{display:flex;flex:1;overflow:hidden}
.dici-list{width:300px;flex-shrink:0;border-right:1px solid var(--border);overflow-y:auto;background:var(--white)}
.dici-list-item{display:flex;align-items:center;gap:9px;padding:10px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:.15s}
.dici-list-item:hover{background:var(--bg)}
.dici-list-item.active{background:var(--ce-orange-lt);border-left:3px solid var(--ce-orange)}
.dici-list-item:not(.active){border-left:3px solid transparent}
.dici-status{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.ds-ok{background:var(--green)} .ds-load{background:var(--text-dim);animation:pulse 1s infinite} .ds-na{background:var(--border)}
.dici-li-info{flex:1;min-width:0}
.dici-li-isin{font-size:11px;font-weight:700;color:var(--text);letter-spacing:.03em}
.dici-li-name{font-size:10px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.dici-li-actions{display:flex;gap:3px;flex-shrink:0}
.dici-icon-btn{width:26px;height:26px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text-dim);font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}
.dici-icon-btn:hover{background:var(--ce-orange);color:#fff;border-color:var(--ce-orange)}
.dici-preview{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}
.dici-preview-bar{padding:10px 16px;background:var(--white);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-shrink:0}
.dici-preview-isin{font-size:11px;font-weight:700;color:var(--ce-orange)}
.dici-preview-name{font-size:11px;color:var(--text);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dici-embed{width:100%;flex:1;border:none;display:block}
.dici-pdf-viewer{flex:1;overflow-y:auto;background:#525659;padding:16px;display:flex;flex-direction:column;align-items:center;gap:12px}
.dici-pdf-page{background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.3);max-width:100%}
.dici-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text-dim);text-align:center;padding:40px}

/* ── Blended Optimizer ──────────────────────────────────────────────────── */
.blend-section{background:var(--white);border-bottom:1px solid var(--border);padding:14px 20px}
.blend-header{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.blend-title{font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ce-orange)}
.blend-params{display:flex;gap:14px;flex-wrap:wrap;align-items:center;margin-bottom:12px;padding:7px 12px;background:var(--bg);border-radius:var(--radius);border:1px solid var(--border)}
.blend-param-label{font-size:9px;color:var(--text-mid)}
.blend-param-input{width:52px;background:transparent;border:none;border-bottom:1px solid var(--ce-orange);padding:1px 4px;font-family:Poppins,sans-serif;font-size:11px;font-weight:600;color:var(--ce-orange);outline:none;text-align:right}
.blend-sliders{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.blend-slider-row{display:flex;align-items:center;gap:10px}
.blend-slider-label{font-size:11px;font-weight:500;width:180px;flex-shrink:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.blend-slider{flex:1;-webkit-appearance:none;appearance:none;height:5px;border-radius:3px;outline:none;cursor:pointer}
.blend-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;border:2.5px solid var(--ce-orange);cursor:grab;box-shadow:0 1px 4px rgba(0,0,0,.25)}
.blend-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:2.5px solid var(--ce-orange);cursor:grab;box-shadow:0 1px 4px rgba(0,0,0,.25)}
/* Sidebar slider (dark background) */
.s-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;outline:none;cursor:pointer;background:rgba(255,255,255,.1)}
.s-slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid rgba(255,255,255,.5);cursor:grab;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.s-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid rgba(255,255,255,.5);cursor:grab;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.blend-pct{font-size:12px;font-weight:700;width:46px;text-align:right;flex-shrink:0}
.blend-rf-track{flex:1;height:5px;background:rgba(24,144,255,.18);border-radius:3px;overflow:hidden;position:relative}
.blend-rf-fill{height:100%;background:var(--blue);border-radius:3px;transition:width .12s}
.blend-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:16px}
.blend-metrics-3{grid-template-columns:repeat(3,1fr)}
.sidebar-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.blend-metric-card{background:var(--bg);border:1px solid var(--border);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;justify-content:space-between;min-height:142px}
.blend-metric-title{font-size:8px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#91a0b5;margin-bottom:14px;line-height:1.5}
.blend-metric-row{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.blend-metric-base{font-size:10px;color:#8e99a8;line-height:1.4}
.blend-metric-target{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.blend-metric-val{font-size:18px;font-weight:800;line-height:1}
.blend-delta{font-size:9px;font-weight:600;padding:1px 5px;border-radius:10px;white-space:nowrap}
.blend-delta-better{background:var(--green-bg);color:var(--green)}
.blend-delta-worse{background:var(--red-bg);color:var(--red)}
.blend-delta-neutral{background:rgba(24,144,255,.1);color:var(--blue)}
.blend-chart-wrap{position:relative;height:350px;margin-bottom:8px}
.blend-legend{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:10px}
.blend-conclusion{padding:10px 14px;background:var(--ce-orange-ltr);border:1px solid rgba(245,84,32,.18);border-radius:var(--radius);font-size:11px;color:var(--text-mid);line-height:1.7}
.blend-conclusion b{color:var(--ce-orange)}

/* ── Print button ───────────────────────────────────────── */
.print-btn{background:var(--ce-navy);color:#fff;border:none;border-radius:var(--radius);padding:6px 14px;
  font-family:Poppins,sans-serif;font-size:11px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;
  letter-spacing:.03em}
.print-btn:hover{background:var(--ce-navy-light)}
.print-btn svg{width:14px;height:14px}

/* ── Print popover ──────────────────────────────────────── */
.print-popover-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.36);display:none;align-items:center;justify-content:center;z-index:1200;padding:20px}
.print-popover-backdrop.on{display:flex}
.print-popover{width:min(460px,100%);background:var(--white);border:1px solid var(--border);border-radius:18px;box-shadow:0 20px 60px rgba(15,23,42,.18);padding:18px}
.print-popover-title{font-size:15px;font-weight:700;color:var(--text);margin-bottom:4px}
.print-popover-sub{font-size:11px;color:var(--text-dim);margin-bottom:14px}
.print-popover-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin-bottom:14px}
.print-popover-item{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:12px;font-size:11px;color:var(--text-mid);cursor:pointer}
.print-popover-item input{accent-color:var(--ce-orange);width:14px;height:14px}
.print-popover-actions{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.print-popover-tools{display:flex;gap:8px;flex-wrap:wrap}
.print-popover-tools button,.print-popover-actions button{font-family:Poppins,sans-serif}
.print-popover .btn-exp{flex:none;padding:9px 16px;background:var(--ce-orange);color:#fff;border:1px solid var(--ce-orange);border-radius:var(--radius);font-size:11px;font-weight:600}
.print-popover .btn-exp:hover{background:var(--ce-orange-h);color:#fff;border-color:var(--ce-orange-h)}

/* ── Print styles ───────────────────────────────────────── */
@page{
  size:A4 landscape;
  margin:10mm 8mm 10mm 8mm;
}
@media print{
  /* Hide non-printable elements */
  .topbar,.sidebar,.prog-banner,.pbar-wrap,.view-tabs,.toolbar,.toolbar-btn,.toolbar-select,.toolbar-input,
  #loginSection,#portfolioSection,.pf-list,.export-row,#statsBox,#exportsBox,#errBox,
  .print-btn,#bmDropdownWrap,#pfCompareDropdownWrap,#perfChartStatus,
  .blend-mode-btn,.blend-slider,.blend-rf-track,.blend-param-input,
  #btnReloadHist,#blendLoadMoreBtn,button,select,input[type="number"],input[type="range"],
  .dici-layout,.vtab{display:none!important}

  /* Reset layout */
  html,body{margin:0!important;padding:0!important;background:#fff!important;color:#1f2d3f!important;font-size:8px;height:auto!important;overflow:visible!important}
  body{font-family:'Poppins',sans-serif}
  #app,.layout,.content{display:block!important;overflow:visible!important;height:auto!important}
  .content{padding:0!important;background:#fff!important}
  .tbl-wrap{overflow:visible!important;max-width:100%!important}
  .tbl-wrap table{max-width:100%!important}
  .data-grid,.tbl-wrap table{border:1px solid #e8eaed!important;border-radius:6px!important;overflow:hidden!important}
  .data-grid th{background:#f5f6fa!important;color:#8e99a8!important}
  .data-grid td{background:#fff!important}
  .data-grid tr:nth-child(even) td{background:#fafbfc!important}

  /* Show all panels */
  .vpanel{display:block!important;opacity:1!important;position:relative!important;
    border:none!important;margin-bottom:14px!important;page-break-inside:avoid}
  .vpanel.print-hidden-panel{display:none!important}
  #p1,#p2,#p3,#p5,#p6,#p8{padding-top:0!important}

  /* Print header */
  .print-header{display:block!important}
  .print-footer{display:flex!important}

  /* Chart sizing */
  canvas{max-width:100%!important;height:auto!important;max-height:250px!important}
  #perfChartWrap{display:block!important;border:none!important;padding:0!important}
  .blend-chart-wrap{height:180px!important}
  #perfSummaryBox,#efficientPortfolio,#corrMatrix,#kpiMetrics,.blend-section{
    border:1px solid #e8eaed!important;border-radius:8px!important;box-shadow:none!important;background:#fff!important
  }
  #kpiMetrics,#efficientPortfolio,#corrMatrix,.blend-section{padding:12px!important;margin-top:10px!important}

  /* Tables — compact pour paysage */
  table{font-size:7.5px!important;width:100%!important;table-layout:auto!important}
  td,th{padding:2px 4px!important;white-space:nowrap!important}
  th{font-size:7px!important}
  .sticky-col{position:static!important;box-shadow:none!important}

  /* KPI cards */
  #kpiMetrics{display:grid!important}
  .kpi-row{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))!important}

  /* Correlation matrix */
  #corrMatrix{display:block!important}

  /* Page breaks */
  .vpanel{page-break-before:auto}
  #p2{page-break-before:always}
  #p6{page-break-before:always}
  #p8{page-break-before:always}

  /* Efficient portfolio */
  #efficientPortfolio{display:block!important;border:none!important}

  /* Blend section — toutes les optimisations à la suite */
  .blend-section{page-break-before:auto!important;page-break-inside:avoid!important;margin-top:8px!important}

  /* Hide VL history accordion details (too long) */
  .vl-row-body{display:none!important}
  .vl-row-chevron{display:none!important}
  .vl-row-head{border:1px solid #e8eaed!important;border-radius:6px!important;margin-bottom:4px!important}

  /* Force colors */
  *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
}
.print-header{display:none;margin-bottom:14px;padding:0 2px 12px;border-bottom:2px solid var(--ce-orange)}
.print-meta{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:10px;color:var(--text-dim);margin-bottom:12px}
.print-meta strong{color:var(--ce-navy);font-weight:600}
.print-header h1{font-size:22px;line-height:1.2;color:var(--ce-navy);margin:0 0 6px;text-align:center}
.print-header p{font-size:11px;color:var(--text-dim);margin:0;text-align:center}
.print-footer{
  display:none;position:fixed;left:0;right:0;bottom:0;padding:4mm 10mm 0;
  justify-content:space-between;align-items:center;font-size:9px;color:var(--text-dim);background:#fff
}
.print-footer strong{color:var(--ce-navy);font-weight:600}

/* ── Mobile ─────────────────────────────────────────────── */
@media (max-width: 980px){
  body{height:auto;min-height:100vh;overflow:auto}
  #app{overflow:visible}
  .topbar{padding:0 14px;height:auto;min-height:56px;flex-wrap:wrap}
  .layout{flex-direction:column;overflow:visible}
  .sidebar{width:100%;border-right:none;border-bottom:1px solid rgba(255,255,255,.06);overflow:visible}
  .sidebar-inner{padding:14px;overflow:visible;flex:none}
  .content{overflow:visible;min-height:0}
  .empty{padding:28px 20px}
  .view-tabs{overflow-x:auto;padding:0 10px}
  .vtab{padding:12px 10px;font-size:11px}
  .toolbar{padding:10px 12px;flex-wrap:wrap}
  .tbl-wrap{overflow:auto}
  .data-grid{min-width:880px}
  #perfChartWrap,#efficientPortfolio,#corrMatrix,.blend-section{padding-left:12px!important;padding-right:12px!important}
  .blend-header,.blend-params{align-items:flex-start}
  .blend-slider-label{width:120px}
  .blend-pct{width:40px}
  .dici-layout{flex-direction:column}
  .dici-list{width:100%;max-height:240px}
  .drawer{width:100%;max-width:none}
  .blend-metrics-3{grid-template-columns:1fr 1fr}
}
/* Help button */
.topbar-help-btn{width:28px;height:28px;border-radius:50%;border:1.5px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);font-family:Poppins,sans-serif;font-size:13px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;margin-left:8px;flex-shrink:0}
.topbar-help-btn:hover{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.35)}
.topbar-api-btn{height:28px;border-radius:14px;border:1.5px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);font-family:Poppins,sans-serif;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .15s;margin-left:4px;flex-shrink:0;padding:0 10px;letter-spacing:.02em}
.topbar-api-btn:hover{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.35)}
.topbar-exports{display:flex;align-items:center;gap:4px;margin-left:4px}
.topbar-export-btn{height:28px;border-radius:14px;border:1.5px solid rgba(255,255,255,.2);background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);font-family:Poppins,sans-serif;font-size:10px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .15s;flex-shrink:0;padding:0 10px;letter-spacing:.02em}
.topbar-export-btn:hover{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.35)}
.topbar-export-btn:disabled{opacity:.3;cursor:not-allowed}
.topbar-export-btn svg{width:14px;height:14px}

/* README modal styles */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.readme-body h1{font-size:20px;font-weight:800;color:var(--ce-navy);margin:0 0 16px;padding-bottom:10px;border-bottom:2px solid var(--ce-orange)}
.readme-body h2{font-size:15px;font-weight:700;color:var(--ce-orange);margin:28px 0 10px;padding-bottom:6px;border-bottom:1px solid rgba(245,84,32,.2);text-transform:uppercase;letter-spacing:.04em}
.readme-body h3{font-size:13px;font-weight:700;color:var(--ce-navy);margin:20px 0 8px}
.readme-body p{margin:0 0 12px;color:#3a4a5e}
.readme-body ul,.readme-body ol{margin:0 0 14px;padding-left:20px}
.readme-body li{margin:0 0 5px;color:#3a4a5e;line-height:1.6}
.readme-body li::marker{color:var(--ce-orange)}
.readme-body ol{list-style-type:decimal}
.readme-body ol li::marker{color:var(--ce-orange);font-weight:600}
.readme-body strong{color:var(--ce-navy);font-weight:600}

/* Underfunding alert card */
.alert-card-underfunded{margin:0 16px 12px;padding:14px 16px;background:linear-gradient(135deg,rgba(211,47,47,.04),rgba(211,47,47,.08));border:1.5px solid rgba(211,47,47,.25);border-radius:10px;animation:alertPulse 2s ease-in-out infinite alternate}
@keyframes alertPulse{0%{box-shadow:0 0 0 0 rgba(211,47,47,.08)}100%{box-shadow:0 0 12px 2px rgba(211,47,47,.12)}}

@media (max-width: 640px){
  .topbar-title{font-size:14px}
  .topbar-badge{width:100%;text-align:center}
  .empty-steps{gap:10px}
  .empty-step{width:100%;justify-content:center}
  .toolbar-input,.toolbar-select{width:100%}
  .exports.on{display:grid;grid-template-columns:1fr 1fr}
  .print-btn{justify-content:center}
  .blend-metrics{grid-template-columns:1fr}
  .blend-metrics-3{grid-template-columns:1fr}
  .sidebar-grid-2{grid-template-columns:1fr}
  .kpi-row{grid-template-columns:1fr}
  #perfChartWrap > div:first-child{align-items:stretch!important}
  #perfChartWrap > div:first-child > *{width:100%}
  #perfChartWrap > div:first-child > span{white-space:normal}
  .data-grid{min-width:600px}
}
@media (max-width:480px){
  .data-grid{min-width:auto}
  .data-grid td,.data-grid th{padding:4px 2px;font-size:9px}
}

/* ══════════════════════════════════════════════════════════════
   Shared simulator components (tab-bar, result cards, panels)
   Used by: loi-jeanbrun, retirement-income-simulator
   ══════════════════════════════════════════════════════════════ */

/* ── Content inner (scrollable result area) ───────────────── */
.content-inner{flex:1;overflow-y:auto;padding:20px}
.content-inner::-webkit-scrollbar{width:6px}
.content-inner::-webkit-scrollbar-thumb{background:var(--border-dark);border-radius:3px}

/* ── Tab bar ──────────────────────────────────────────────── */
.tab-bar{
  flex-shrink:0;background:#fff;border-bottom:1px solid var(--border);
  display:flex;padding:0 20px;gap:1px
}
.tab-btn{
  padding:12px 16px;font-size:12px;font-weight:500;color:var(--text-dim);
  background:none;border:none;cursor:pointer;position:relative;transition:.2s;
  font-family:'Poppins',sans-serif
}
.tab-btn:hover{color:var(--text)}
.tab-btn.active{color:var(--ce-orange)}
.tab-btn.active::after{
  content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--ce-orange)
}

/* ── Result cards grid ────────────────────────────────────── */
.results-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:14px;margin-bottom:18px
}
.result-card{
  background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:16px;box-shadow:var(--shadow-sm)
}
.result-label{
  font-size:10px;color:var(--text-dim);margin-bottom:4px;font-weight:500;text-transform:uppercase;letter-spacing:.03em
}
.result-value{
  font-size:20px;font-weight:700;color:var(--text);margin-bottom:2px
}
.result-value.positive{color:var(--green)}
.result-value.negative{color:var(--red)}
.result-detail{
  font-size:10px;color:var(--text-dim)
}

/* ── Simulator panels ─────────────────────────────────────── */
.sim-panel{
  background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);
  margin-bottom:16px;overflow:hidden;box-shadow:var(--shadow-sm)
}
.sim-panel-header{
  padding:14px 20px;border-bottom:1px solid var(--border);
  background:linear-gradient(to bottom,#fff,rgba(248,249,250,.8))
}
.sim-panel-title{
  font-size:14px;font-weight:600;color:var(--text);margin:0;
  display:flex;align-items:center;gap:8px
}
.sim-panel-body{padding:20px}

/* ── Simulate button ──────────────────────────────────────── */
.btn-simulate{
  width:100%;padding:10px 14px;border:none;border-radius:var(--radius);
  background:var(--ce-orange);color:#fff;font-family:'Poppins',sans-serif;
  font-size:12px;font-weight:600;cursor:pointer;transition:.2s;
  display:flex;align-items:center;justify-content:center;gap:6px
}
.btn-simulate:hover{background:var(--ce-orange-h)}
.btn-simulate:disabled{background:var(--text-dim);cursor:not-allowed}

/* ── Simulator responsive ─────────────────────────────────── */
@media (max-width: 640px){
  .results-grid{grid-template-columns:1fr}
  .tab-bar{padding:0 10px;overflow-x:auto}
  .tab-btn{padding:10px 12px;font-size:11px;white-space:nowrap}
}

/* ══════════════════════════════════════════════════════════════
   Dashboard shared pattern (scpi-demembrement, rachat-assurance-vie)
   ══════════════════════════════════════════════════════════════ */

/* Layout override for dashboard views (full-page scroll, no sidebar) */
.layout.dashboard-layout{overflow-y:auto}
.dashboard-content{margin:0 auto;max-width:900px;padding:20px 24px}
.dashboard-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.dashboard-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text)}
.dashboard-count{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px;background:var(--bg);color:var(--text-mid);border:1px solid var(--border)}
.dashboard-spacer{flex:1}
/* Compact button variant for dashboard header (overrides width:100%) */
.btn-simulate.btn-sm{width:auto;padding:8px 18px;font-size:12px}
/* Toolbar-size button variant */
.btn-simulate.btn-toolbar{width:auto;padding:6px 16px;font-size:11px}
/* Large CTA button variant (empty-state call-to-action) */
.btn-simulate.btn-cta{width:auto;padding:10px 28px}
/* Content area padding container (rachat-assurance-vie detail views) */
.content-tabs{padding:20px 24px}

/* Dashboard table */
.dashboard-table{width:100%;border-collapse:collapse;font-size:12px}
.dashboard-table thead tr{text-align:left;border-bottom:2px solid var(--border)}
.dashboard-table thead th{padding:8px;font-weight:600}
.dashboard-table tbody tr{border-bottom:1px solid var(--border);cursor:pointer}
.dashboard-table tbody tr:hover{background:var(--bg)}
.dashboard-table td{padding:8px}

/* Action buttons in dashboard tables */
.btn-dup{font-size:10px;padding:4px 10px;margin-right:4px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text-mid);cursor:pointer;font-family:'Poppins',sans-serif}
.btn-dup:hover{background:var(--border-dark);color:var(--text)}
.btn-del{font-size:10px;padding:4px 10px;border:1px solid var(--red);border-radius:var(--radius);background:var(--red-bg);color:var(--red);cursor:pointer;font-family:'Poppins',sans-serif}
.btn-del:hover{background:rgba(245,34,45,.15);border-color:var(--red)}

/* ── Sidebar info text (on dark sidebar background) ────────── */
.s-info{font-size:11px;color:rgba(255,255,255,.6);margin-top:4px}
.s-info strong{color:rgba(255,255,255,.85)}

/* ── Sidebar split display (NP / US boxes) ─────────────────── */
.s-split-row{display:flex;gap:8px;margin-top:6px;font-size:11px}
.s-split-box{flex:1;text-align:center;padding:6px 4px;background:rgba(255,255,255,.06);border-radius:var(--radius);color:rgba(255,255,255,.8)}

/* ── Warning box in content area ───────────────────────────── */
.warning-box{margin-top:20px;padding:12px 16px;background:var(--gold-bg);border:1px solid var(--gold);border-radius:var(--radius-lg);font-size:11px;color:var(--text)}
.warning-box > div{margin-bottom:4px}
.warning-box > div:last-child{margin-bottom:0}

/* ── Card (shared content block) ───────────────────────────── */
.card{background:var(--white);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:16px;overflow:hidden}
.card-t{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);margin-bottom:8px}

/* ── Tab buttons (light theme, content area) ───────────────── */
.tab-active{padding:10px 14px;font-size:12px;font-weight:600;background:none;border:none;border-bottom:2px solid var(--ce-orange);color:var(--ce-orange);cursor:pointer;font-family:'Poppins',sans-serif;white-space:nowrap}
.tab-inactive{padding:10px 14px;font-size:12px;font-weight:400;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-dim);cursor:pointer;font-family:'Poppins',sans-serif;white-space:nowrap}
.tab-inactive:hover{color:var(--text);border-bottom-color:var(--border-dark)}

/* ── Modal overlay and box ─────────────────────────────────── */
.modal-overlay{position:fixed;inset:0;z-index:9000;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;padding:20px}
.modal-overlay.on{display:flex}
.modal-box{background:var(--white);border-radius:12px;padding:24px;width:100%;max-width:min(600px,90vw);max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.3)}

/* ── Modal buttons ────────────────────────────────────────────── */
.modal-btn{font-size:11px;padding:6px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);cursor:pointer;font-family:'Poppins',sans-serif;font-weight:600;transition:.15s}
.modal-btn:hover{background:var(--border);color:var(--text)}
.modal-btn-primary{font-size:11px;padding:6px 16px;border:none;border-radius:var(--radius);background:var(--ce-orange);color:#fff;cursor:pointer;font-family:'Poppins',sans-serif;font-weight:600;transition:.15s}
.modal-btn-primary:hover{background:var(--ce-orange-h)}
.modal-close-btn{background:none;border:none;font-size:18px;cursor:pointer;color:var(--text-dim);padding:4px;transition:.15s}
.modal-close-btn:hover{color:var(--text)}

/* ── Shared table classes ─────────────────────────────────────── */
.tbl-header-row{background:var(--ce-navy);color:#fff}
.tbl-header-row th{padding:8px;font-size:10px;font-weight:600}
.tbl-header-row-light{background:var(--bg);border-bottom:2px solid var(--border)}
.tbl-header-row-light th{padding:6px 8px;text-align:right;font-weight:600;font-size:10px}
.tbl-cell{padding:6px 8px}
.tbl-cell-right{padding:6px 8px;text-align:right}
.tbl-cell-center{padding:6px 8px;text-align:center}

/* ── Utility classes ──────────────────────────────────────────── */
.text-success{color:var(--green)}
.text-danger{color:var(--red)}
@media print{.no-print{display:none!important}}

/* ── Mobile: scpi-demembrement, rachat-assurance-vie ───────── */
@media (max-width:768px){
  .dashboard-content{padding:14px 12px}
  .dashboard-header{flex-wrap:wrap;gap:8px}
  .dashboard-table{font-size:11px}
  .dashboard-table th,.dashboard-table td{padding:6px 4px}
  .s-split-row{flex-direction:column;gap:4px}
  .modal-box{padding:16px;max-width:none;width:calc(100% - 24px)}
  .btn-dup,.btn-del{padding:8px 14px;min-height:44px;font-size:11px}
  .topbar-help-btn{width:44px;height:44px}
  .topbar-api-btn,.topbar-export-btn{min-height:44px}
  .s-input,.s-select{font-size:16px}
}

/* ══════════════════════════════════════════════════════════════
   SSO Gate — Écran de connexion plein écran
   ══════════════════════════════════════════════════════════════ */
.sso-gate{
  position:fixed;inset:0;z-index:10000;
  display:flex;align-items:center;justify-content:center;
  background:#1f2d3f;
  font-family:Poppins,system-ui,sans-serif;
}
.sso-gate-card{
  text-align:center;padding:48px 40px;
  background:rgba(255,255,255,.06);border-radius:16px;
  border:1px solid rgba(255,255,255,.1);
  max-width:380px;width:100%;
  box-shadow:0 20px 60px rgba(0,0,0,.3);
}
.sso-gate-logo{
  height:56px;border-radius:8px;margin-bottom:20px;
}
.sso-gate-title{
  font-size:20px;font-weight:700;color:#fff;margin-bottom:8px;
  letter-spacing:-.02em;
}
.sso-gate-subtitle{
  font-size:13px;color:rgba(255,255,255,.55);margin:0 0 28px;
  line-height:1.5;
}
.sso-gate-btn{
  display:inline-block;padding:12px 32px;
  background:#f55420;color:#fff;border:none;border-radius:8px;
  font-family:Poppins,sans-serif;font-size:13px;font-weight:600;
  cursor:pointer;letter-spacing:.01em;
  transition:background .15s,transform .1s;
}
.sso-gate-btn:hover{background:#e04a18;transform:translateY(-1px)}
.sso-gate-btn:active{transform:translateY(0)}
.sso-gate-spinner{margin:0 auto 12px;display:flex;justify-content:center}
.sso-gate-error{
  font-size:11px;color:#ff6b6b;margin:12px 0 0;
}
/* Bouton déconnexion dans la topbar */
.topbar-logout-btn{
  background:none;border:1px solid rgba(255,255,255,.2);border-radius:6px;
  color:rgba(255,255,255,.7);font-family:Poppins,sans-serif;font-size:10px;
  padding:4px 10px;cursor:pointer;transition:all .15s;white-space:nowrap;
}
.topbar-logout-btn:hover{
  border-color:rgba(255,255,255,.4);color:#fff;background:rgba(255,255,255,.08);
}

/* ══════════════════════════════════════════════════════════════
   Collapsible params panel (iframe-ready)
   ══════════════════════════════════════════════════════════════ */

/* Mode iframe : single-column, topbar masquée, layout vertical */
body.iframe-mode{overflow:auto;height:auto}
body.iframe-mode #app{overflow:visible;flex:none;height:auto}
body.iframe-mode .topbar{display:none}
body.iframe-mode .sidebar{display:none}
/* Masque tout ce qui précède le dropdown iframe-nav dans les simulateurs
   portfolio (progress banner, barre, erreurs, en-têtes/pieds d'impression)
   pour que l'iframe démarre directement sur le sélecteur. */
body.iframe-mode .prog-banner,
body.iframe-mode .prog-banner.on,
body.iframe-mode .pbar-wrap,
body.iframe-mode .err,
body.iframe-mode .print-header,
body.iframe-mode .print-footer{display:none !important}
body.iframe-mode .layout{flex-direction:column;overflow:visible;flex:none;height:auto}
body.iframe-mode .content{overflow:visible;flex:none;height:auto}
body.iframe-mode .content-inner{overflow:visible;flex:none;height:auto}
body.iframe-mode .view-tabs{display:flex}
body.iframe-mode .view-tabs.on{display:flex}

/* Nav iframe : dropdown compact pour portfolio-simulator et contract-performance-visualizer */
.iframe-nav{display:none}
body.iframe-mode .iframe-nav{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#fff;border-bottom:1px solid var(--border);flex-wrap:wrap}
body.iframe-mode .iframe-nav label{font-size:10px;font-weight:600;color:var(--text-mid);text-transform:uppercase;letter-spacing:.05em}
body.iframe-mode .iframe-nav select{flex:1;min-width:180px;padding:6px 10px;font-size:12px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;color:var(--text);font-family:'Poppins',sans-serif}
body.iframe-mode .iframe-nav select option{background:#fff;color:var(--text)}
body.iframe-mode .iframe-nav .btn-exp{flex:none;font-size:11px;padding:6px 12px;background:#fff;color:var(--text);border:1px solid var(--border)}
body.iframe-mode .iframe-nav .btn-exp:hover{background:var(--bg);color:var(--text);border-color:var(--text-mid)}
body.iframe-mode .iframe-nav .btn-exp[disabled]{opacity:.5;cursor:not-allowed}
/* Mode réduit : liste masquée, seulement le nom sélectionné + bouton Changer */
body.iframe-mode .iframe-nav .iframe-nav-current{display:none;align-items:center;gap:6px;font-size:12px;color:var(--text);flex:1;min-width:0}
body.iframe-mode .iframe-nav .iframe-nav-current strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.iframe-mode .iframe-nav.collapsed label,
body.iframe-mode .iframe-nav.collapsed select,
body.iframe-mode .iframe-nav.collapsed .btn-exp:not(.iframe-nav-expand){display:none}
body.iframe-mode .iframe-nav.collapsed .iframe-nav-current{display:inline-flex}

/* Sections collapsibles dans la sidebar : toujours ouvertes, style adapté */
.sidebar .params-section-body{max-height:none;overflow:visible;padding-bottom:14px}
.sidebar .params-section-toggle{color:rgba(255,255,255,.4)}
.sidebar .params-section-toggle:hover{color:rgba(255,255,255,.7)}
.sidebar .params-section-chevron{display:none}
.sidebar .params-section{border-bottom-color:rgba(255,255,255,.08)}
.sidebar .p-input,.sidebar .p-select{background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.12);color:#fff}
.sidebar .p-label{color:rgba(255,255,255,.4)}
.sidebar .p-info{color:rgba(255,255,255,.5)}
.sidebar .p-info strong{color:#fff}

/* Conteneur principal du panneau de paramètres (fond blanc) */
.params-panel{
  background:var(--white);
  border-bottom:1px solid var(--border);
  padding:0 20px;
}

/* Section collapsible */
.params-section{
  border-bottom:1px solid var(--border);
}
.params-section:last-child{border-bottom:none}

/* Bouton toggle d'une section */
.params-section-toggle{
  width:100%;display:flex;align-items:center;justify-content:space-between;
  background:none;border:none;padding:10px 0;cursor:pointer;
  font-family:'Poppins',sans-serif;font-size:10px;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:var(--text-mid);
  text-align:left;
}
.params-section-toggle:hover{color:var(--text)}

/* Chevron SVG du toggle */
.params-section-chevron{
  flex-shrink:0;transition:transform .25s;color:var(--text-dim);
}
.params-section.open .params-section-chevron{transform:rotate(180deg)}

/* Corps collapsible */
.params-section-body{
  max-height:0;overflow:hidden;
  transition:max-height .3s ease,padding-bottom .3s ease;
}
.params-section.open .params-section-body{
  max-height:2000px;
  padding-bottom:14px;
}

/* Champs light-theme (fond blanc, texte sombre) */
.p-field{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
.p-field:last-child{margin-bottom:0}
.p-label{
  font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-dim);padding:0 2px;
}
.p-input{
  width:100%;background:#fff;border:1px solid var(--border-dark);
  border-radius:var(--radius);padding:8px 10px;color:var(--text);
  font-family:'Poppins',sans-serif;font-size:12px;outline:none;transition:.2s;
}
.p-input:focus{border-color:var(--ce-orange);background:#fff}
.p-input::placeholder{color:var(--text-dim)}

.p-select{
  width:100%;background:#fff;border:1px solid var(--border-dark);
  border-radius:var(--radius);padding:8px 10px;color:var(--text);
  font-family:'Poppins',sans-serif;font-size:12px;outline:none;transition:.2s;
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' fill='none'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238e99a8' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 10px center;padding-right:28px;
  cursor:pointer;
}
.p-select:focus{border-color:var(--ce-orange)}

/* Grille 2 colonnes pour les champs */
.p-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}

/* Radio groups light */
.p-radio-group{display:flex;gap:6px;flex-wrap:wrap}
.p-radio-label{
  flex:1;display:flex;align-items:center;gap:6px;font-size:11px;cursor:pointer;
  padding:7px 10px;border-radius:var(--radius);
  border:1px solid var(--border-dark);background:var(--bg);
  color:var(--text-mid);transition:.2s;user-select:none;
}
.p-radio-label:hover{background:var(--border);border-color:var(--border-dark);color:var(--text)}
.p-radio-label.active{
  border-color:var(--ce-orange);background:var(--ce-orange-ltr);color:var(--ce-orange);
}
.p-radio-label input[type="radio"]{
  accent-color:var(--ce-orange);margin:0;width:13px;height:13px;flex-shrink:0
}

/* Info text light-theme */
.p-info{
  font-size:11px;color:var(--text-mid);margin-top:4px;
  padding:6px 10px;border-radius:var(--radius);
  background:var(--bg);border:1px solid var(--border);
}
.p-info strong{color:var(--text);font-weight:600}

/* Split boxes (NP/US) light-theme */
.p-split-row{display:flex;gap:8px;margin-top:6px;font-size:11px}
.p-split-box{
  flex:1;text-align:center;padding:6px 4px;
  background:var(--bg);border:1px solid var(--border);
  border-radius:var(--radius);color:var(--text-mid);
}

/* Slider dans le params-panel (fond clair) */
.params-panel .s-slider::-webkit-slider-thumb{
  background:var(--white);border:2px solid var(--border-dark);box-shadow:0 1px 4px rgba(0,0,0,.15)
}
.params-panel .s-slider::-moz-range-thumb{
  background:var(--white);border:2px solid var(--border-dark);box-shadow:0 1px 4px rgba(0,0,0,.15)
}

/* Mobile */
@media(max-width:640px){
  .params-panel{padding:0 12px}
  .p-grid{grid-template-columns:1fr}
}
