/* === PALETTE CRYPTOSCOPE === */
:root {
    --bg-primary: #2B2B2B;
    --bg-secondary: #151617; /* 1C1C21 */
    --bg-tertiary: #161b22;
    --text-primary: #ffffff;
    --text-secondary: #c9d1d9;
    --accent-green: #3fb950;
    --accent-blue: #58a6ff;
    --accent-red: #f85149;
    --border-color: #151617; /*30363D*/
}

/* Reset et base */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    /*background: #2a2a2b !important;*/
    color: #ffffff;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;/*-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; */ /*"Inter var", sans-serif; */
    font-weight: 50;
    margin: 0 auto;
    padding: 0;
    min-height: 100vh;
    max-width: 1620px; /* 1600 */
}

html {
    background: #222222 !important; /* 1a1f2e 1c1c1e*/
}

/* === HAMBURGER === */
.hamburger {
    display: none;
    position: fixed;
    top: 20px;
    left: 20px;
    z-index: 1001;
    background: #192633;
    border: 1px solid #58a6ff;
    cursor: pointer;
    padding: 12px;
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
}

.hamburger span {
    display: block;
    width: 25px;
    height: 3px;
    background: #58a6ff;
    margin: 4px 0;
    transition: 0.3s;
    border-radius: 2px;
}

/* RESET des marges/paddings */
.logo-container {
    width: auto;  /* width: 100%; */
    text-align: center;
    overflow: visible; /* Important pour que le zoom ne soit pas coupÃƒÂ© */
}

.logo-svg {
    width: auto; /* width: 100%; */
    height: auto;
    transform: scale(1); /* Zoom 150% - ajustez ce chiffre */
    transform-origin: center center; /* Zoom depuis le centre */
}



/* === SIDEBAR === */
.sidebar {
    position: fixed;
    left: 0;
    top: 0;
    width: 340px;
    height: 100vh;
    background: #0B1A2C;
    padding: 20px;
    overflow-y: auto;
    z-index: 1000;
    transition: transform 0.3s ease;
}

.sidebar-section {
    background: transparent;
    border: none;
    padding: 0;
    margin-bottom: 30px;
}

.sidebar h4 {
    color: #8899a6;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 1px;
    margin-bottom: 15px;
    text-transform: uppercase;
}

.info-item {
    display: flex;
    justify-content: space-between;
    padding: 8px 0;
    border-bottom: 1px solid rgba(255,255,255,0.05);
}

.info-item:last-child {
    border-bottom: none;
}

.info-item .label {
    color: #8899a6;
    font-size: 13px;
}

.info-item .value {
    color: #ffffff;
    font-size: 13px;
    font-weight: 500;
}

.connect-info {
    background: rgba(0,0,0,0.3);
    padding: 12px;
    border-radius: 4px;
    margin-top: 10px;
}

.connect-info code {
    color: #58a6ff;
    font-size: 12px;
    word-break: break-all;
}

/* Navbar */
.navbar {
    background: var(--bg-secondary);
    border-bottom: 1px solid var(--border-color);
    padding: 0;
    position: sticky;
    top: 0;
    z-index: 100;
    margin-left: 240px;
}

.nav-container {
    max-width: 1400px;
    margin: 0 auto;
    padding: 0 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 60px;
}

.logo {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 20px;
    font-weight: 600;
}

.logo-icon {
    font-size: 24px;
}

.logo-text {
    color: #1da1f2;
}

.nav-links {
    display: flex;
    gap: 30px;
}

.nav-links a {
    color: var(--text-secondary);
    text-decoration: none;
    font-size: 14px;
    transition: color 0.2s;
}

.nav-links a:hover {
    color: #1da1f2;
}

/* Layout principal */
.main-container {
    /*margin-left: 340px;    /* marge entre bordure gauche et layout */
    /*padding: 0 20px 20px 0px !important; */
    
    margin-left: 0;         /* Suppression de la marge gauche */
    margin-right: 0;
    padding: 0 20px 20px 20px !important;
    max-width: 2000px;      /* Largeur max du contenu */
    margin: 0 auto;         /* Centre le contenu */

}

/* Content area */
.content {
    display: flex;
    flex-direction: column;
    gap: 0px; /* 20px; */
    max-width: 1400px; /* max-width: 80% ou 1400px; */
    width: 100%;
    margin: 0 auto;
    padding-top: 0;  /* espace entre haut de page et graphiques */
}

/* Search panel */
.search-panel {
    background: var(--bg-secondary); /* var(--bg-secondary); */
    border: 1px solid var(--border-color);
    /*padding: 5px 25px 10px 25px;   /* 5px 25px 10px 25px */
    width: 500px;
}

.search-panel h2 {
    font-size: 18px;
    margin-bottom: 15px;
    color: var(--text-primary);
    font-weight: 600;
}

.search-form {
    display: grid;
    grid-template-columns: 1fr auto;
    /*gap: 10px;*/
}

/* === RESPONSIVE === */
@media (max-width: 768px) {
    .sidebar {
        transform: translateX(-100%);
    }
    
    .sidebar.active {
        transform: translateX(0);
    }
    
    .hamburger {
        display: block;
    }
    
    .navbar {
        margin-left: 0;
    }
    
    .main-container {
        margin-left: 0px;
    }
}

/* Top charts grid (2/3 + 1/3) */
.top-charts-grid {
    display: grid;
    grid-template-columns: 4fr 1fr 0fr;  /* 2fr 1fr 2fr; */
    gap: 0px; /* espacement entre les 2 graphes */
    margin-bottom: 0px;
    margin-top: 20 !important;  /* Force pas d'espace en haut */
    max-width: 2000px;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    height: auto; /* 380px; hauteur du bloc contenant graph pool blocks */
}

.chart-wide {
    grid-column: span 1;
}

.chart-narrow {
    grid-column: span 1;
    background-color: #0e0e10;
}

/* Responsive */
@media (max-width: 1200px) {
    .top-charts-grid {
        grid-template-columns: 1fr;
    }
}

.search-form input {
    background: #4b4b4b; /* #1a1f2e; */
    border: 1px solid var(--border-color);
    padding: 12px 15px;
    color: var(--text-primary);
    font-size: 14px;
    outline: none;
    transition: border-color 0.2s;
    /* box-shadow: 
    inset 0 0 10px var(--glow-color, rgba(0, 150, 255, 0.5)),
    0 0 5px var(--glow-color, rgba(0, 150, 255, 0.3)); */
}

.search-form input:focus {
    border-color: #1da1f2;
}

.search-form input::placeholder {
    color: var(--text-secondary);
}

.btn-primary {
    background: #1da1f2;
    color: white;
    border: none;
    padding: 12px 30px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.2s;
}

.btn-primary:hover {
    background: #1a8cd8;
}

/* Alerts */
.alert {
    padding: 15px;
    border-left: 4px solid;
    font-size: 13px;
}

.alert-error {
    background: #2d1a1a;
    border-left-color: #e0245e;
    color: #ff6b9d;
}

/* Stats grid - balances + hashrate*/
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));  /* S'adapte automatiquement */
    gap: 0px;
    margin-bottom: 0px;
}

.stat-box {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    padding: 10px;  /* Plus de padding pour plus grand */
    text-align: left;
}

.stat-box:hover {
    border-color: #1da1f2;
}

.stat-box.highlight {
    border-color: #1da1f2;
    background: #1a2838;
}

.stat-label {
    font-size: 12px;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}

.stat-value {
    font-size: 20px;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 5px;
}

.stat-subtext {
    font-size: 11px;
    color: #657786;
}

/* Chart container */
.chart-container {
    background: var(--bg-secondary); /* var(--bg-secondary);  */
    border: 20px solid var(--border-color);
    padding: 0px 0px 0px 0px;   /* padding: 25px;  */
    margin-bottom: 0px;  /* Ã¢â€ Â Ajoute cet espacement entre block luck et miner statistics*/
}

.chart-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end; /* center; flex-end; */
    /*background: #d00000;   /* #192633 1A1F2E 404040 1A1F2E*/
    padding: 0px 0px;     /* 6px hauteur de la bande Balance History  et Hashrate History    */
    margin: 0px 0px 0px 0px;  /* DÃƒÂ©borde du padding du parent -25px -25px 0px -31px;*/
    border-radius: 0;  /* Pas d'arrondi */
    /*  */
    height: 5px;  /* 50px; */
}
.chart-header h2 {
    font-size: 36px;
    font-weight: 50;
    margin: 0;
    color: #bababa;
    /*background: transparent;  /* Pas de fond, utilise celui du parent */
    /*padding: 0;*/
    /*background-color: #7b0000;*/
    padding: 20px 0px 20px 0px;
    border-radius: 1px;  
    align-items: flex-end;
    font-family: "Bebas Neue", sans-serif;/*-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; */ /*"Inter var", sans-serif; */
    font-weight: 50;
    height: 57px;
    line-height: 40px;
}

.chart-header h3 {
    font-size: 24px;
    font-weight: 50;
    margin: 0;
    color: #bababa;
    /*background: transparent;  /* Pas de fond, utilise celui du parent */
    /*padding: 0;*/
    /*background-color: #7b0000;*/
    padding: 0px 0px 0px 0px;
    border-radius: 1px;  
    align-items: flex-end;
    font-family: "Bebas Neue", sans-serif;/*-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; */ /*"Inter var", sans-serif; */
    font-weight: 50;
    height: 27px;
}

#hashrateChart {
    max-height: 300px;
}

/* Time selector */
.time-selector {
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
}

.time-btn {
    background: #1a1f2e;
    color: var(--text-secondary);
    border: 1px solid var(--border-color);
    padding: 2px 14px;
    font-size: 12px;
    cursor: pointer;
    transition: all 0.2s;
    white-space: nowrap;
}

.time-btn:hover {
    border-color: #1da1f2;
    color: #1da1f2;
}

.time-btn.active {
    background: #1da1f2;
    color: white;
    border-color: #1da1f2;
}

/* Info grid - Blocs sous le graphique */
.info-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
    gap: 15px;
}

.info-card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    padding: 25px;
}

.info-card h3 {
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 20px;
    color: var(--text-primary);
}

/* Stats table */
.stats-table {
    width: 100%;
    border-collapse: collapse;
}

.stats-table tr {
    border-bottom: 1px solid var(--border-color);
}

.stats-table tr:last-child {
    border-bottom: none;
}

.stats-table td {
    padding: 12px 0;
    font-size: 13px;
}

.stats-table td:first-child {
    color: var(--text-secondary);
}

.stats-table td:last-child {
    color: var(--text-primary);
    font-weight: 500;
}

.text-right {
    text-align: right;
}

/* Payment info */
#lastPaymentInfo {
    font-size: 13px;
}

#lastPaymentInfo .payment-row {
    display: flex;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid var(--border-color);
}

#lastPaymentInfo .payment-row:last-child {
    border-bottom: none;
}

#lastPaymentInfo .label {
    color: var(--text-secondary);
}

#lastPaymentInfo .value {
    color: var(--text-primary);
    font-weight: 500;
}

.no-data {
    text-align: center;
    padding: 40px;
    color: #657786;
    font-size: 13px;
}

/* Footer */
.footer {
    background: var(--bg-secondary);
    border-top: 1px solid var(--border-color);
    margin-top: 40px;
    padding: 30px 0;
}

.footer-content {
    max-width: 1400px;   /* max-width: 1400px; */
    margin: 0 auto;
    padding: 0 20px;
    text-align: center;
}

.footer-content p {
    color: var(--text-secondary);
    font-size: 12px;
    margin-bottom: 5px;
}

.footer-links {
    margin-top: 10px;
}

.footer-links a {
    color: var(--text-secondary);
    text-decoration: none;
    margin: 0 10px;
    font-size: 12px;
}

.footer-links a:hover {
    color: #1da1f2;
}

/* Responsive */
@media (max-width: 1024px) {
    .main-container {
        grid-template-columns: 1fr;
    }
    
    .sidebar {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    }
}

@media (max-width: 768px) {
    .search-form {
        grid-template-columns: 1fr;
    }
    
    .stats-grid {
        grid-template-columns: 1fr;
    }
    
    .info-grid {
        grid-template-columns: 1fr;
    }
    
    .nav-links {
        display: none;
    }
    
    .chart-header {
        flex-direction: column;
        align-items: flex-start;
    }
    
    .time-selector {
        width: 100%;
        justify-content: space-between;
    }
}

/* Chart wrapper simple - pas d'animation CSS */
.chart-wrapper {  /* GRAPHIQUE BLOCK LUCK */
    width: 100%; /* 100%; */
    height: 220px;  /* hauteur du graphique Pool Blocks 240 */
    /* aspect-ratio: 3 / 1;  ----- Ratio 3:1 comme Cryptoscope */
    position: relative;
    background: #0e0e10; /* 192229 BACKGROUND GRAPHIQUES */
    margin-left: 0;
    margin-right: 0;
}

.chart-wrapper-0 { /* GRAPHIQUE POOL STATS */
    width: 100%; /* 100%; 1000px */
    height: 430px;  /* hauteur du graphique Pool Blocks */
    /* aspect-ratio: 3 / 1;  ----- Ratio 3:1 comme Cryptoscope */
    position: relative;
    background: #0e0e10; /* 192229 BACKGROUND GRAPHIQUES */

    margin-left: auto; /* â† Ceci pousse tout le bloc Ã  droite */
    margin-right: 0;   /* Optionnel */
}


#hashrateChart {
    max-height: 300px;
}

/* Blocks section */
.blocks-section {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    padding: 25px;
    margin-top: 0px;
}

.blocks-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #192633;
    padding: 6px 25px;
    margin: -25px -25px 20px -25px;
    border-radius: 0;
}

.blocks-header h3 {
    font-size: 16px;
    font-weight: 600;
    margin: 0;
    color: #ffffff;
    background: transparent;
    padding: 0;
}

.blocks-controls {
    display: flex;
    gap: 10px;
    align-items: center;
    margin-left: auto;
}

.blocks-controls select {
    background: #1a1f2e;
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    padding: 6px 12px;
    border-radius: 3px;
    font-size: 13px;
    cursor: pointer;
}

.blocks-controls select:hover {
    border-color: #1da1f2;
}

.refresh-toggle {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    padding: 6px 12px;
    border-radius: 3px;
    font-size: 13px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 5px;
    transition: all 0.2s;
}

.refresh-toggle:hover {
    border-color: #1da1f2;
    background: #1a2838;
}

.refresh-toggle.paused {
    border-color: #fbbf24;
}

.refresh-toggle.paused #refreshIcon {
    color: #fbbf24;
}

@media (max-width: 768px) {
    .blocks-header {
        flex-direction: column;
        align-items: flex-start;
    }
    
    .blocks-controls {
        width: 100%;
        justify-content: space-between;
    }
}

/* Pagination */
.pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 5px;
    margin-top: 20px;
    padding: 15px;
}

.pagination button {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    padding: 6px 12px;
    cursor: pointer;
    border-radius: 3px;
    font-size: 13px;
    transition: all 0.2s;
}

.pagination button:hover:not(:disabled) {
    background: #1da1f2;
    border-color: #1da1f2;
}

.pagination button:disabled {
    opacity: 0.3;
    cursor: not-allowed;
}

.pagination button.active {
    background: #1da1f2;
    border-color: #1da1f2;
    font-weight: 600;
}

.pagination .page-info {
    color: var(--text-secondary);
    font-size: 13px;
    margin: 0 10px;
}

/* Status badges ---------------------------------------------------------*/
.status-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 1px;
    font-size: 11px;
    font-weight: 600;
    /*text-transform: uppercase;*/
}

.status-confirmed {
    background: #1a4d2e;
    color: #4ade80;
}

.status-pending {
    background: #4a3c1a;
    color: #fbbf24;
}

.status-orphan {
    background: #4a1a1a;
    color: #f87171;
}

/* Hyperlien Transaction Hash */
.tx-link {
    color: #58a6ff;
    text-decoration: none;
    font-family: monospace;
    font-size: 10px;
}

.tx-link:hover {
    text-decoration: underline;
}

/* Hash court */
.block-hash {
    font-family: monospace;
    font-size: 12px;
    color: #1da1f2;
}

.blocks-table-container {
    overflow-x: auto;
}

.blocks-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.blocks-table thead {
    background: #404040;
    border-bottom: 2px solid var(--border-color);
}

.blocks-table th {
    padding: 6px 10px;
    text-align: left;
    color: var(--text-secondary);
    font-weight: 600;
    text-transform: uppercase;
    font-size: 11px;
    letter-spacing: 0.5px;
    text-align: center;  /* ---- */
}

.blocks-table th:last-child {
    text-align: center;  /* right */
    padding-right: 20px;
}

.blocks-table tbody tr {
    border-bottom: 1px solid var(--border-color);
    transition: background 0.2s;
}

.blocks-table tbody tr:hover {
    background: #1a2838;
}

.blocks-table tbody tr:last-child {
    border-bottom: none;
    text-align: center;  /* ---- */
}

.blocks-table td {
    padding: 2px 10px;  /* ESPACEMENT LIGNES TABLEAU RECENT BLOCK */
    color: var(--text-primary);
    text-align: center;  /* ---- */
}

/* DÃƒÂ©cimales plus petites */
.blocks-table .decimals {
    font-size: 11px;
    color: var(--text-secondary);
    font-weight: normal;
}

.blocks-table td:last-child {
    text-align: center;  /* right */
    padding-right: 20px;
}

/* Responsive table */
@media (max-width: 768px) {
    .blocks-table {
        font-size: 11px;
    }
    
    .blocks-table th,
    .blocks-table td {
        padding: 8px 5px;
    }
}

.luck-gauge-wrapper {
    width: 100%; /* 240px Un peu plus large pour les repÃƒÂ¨res */   
    height: 120px;
    margin: 2 auto;
    position: relative; /* relative;*/
    background-color: #0e0e10;
    /* text-align: center; /* Pour centrer les Ã©lÃ©ments inline text-align: center;*/
    padding-left: 0px;
}

#luckGauge {
    /*display: block;*/
    display: inline-block; /* Change de block Ã  inline-block */
    width: 240px;
    height: 240px;
    /*position: absolute;*/
    position: relative; /* Change de absolute Ã  relative */
    top: -120px;
    /*left: 0;*/
     /*padding: 0 40px 0 0 40px;*/
    margin-left: -20px;


}

.luck-gauge-label {
    /*font-family: "Bebas Neue", sans-serif;*/
    /*font-size: 40px;*/
    /*font-weight: 400;*/
    position: absolute;
    bottom: -10px;
    left: 50%;
    transform: translateX(-50%);
    text-align: center;
    z-index: 10;
    /* background: rgba(0, 0, 0, 0.6); */
    padding: 10px 12px;
    /* border-radius: 20px; */
    /* min-width: 100px; */
    /* backdrop-filter: blur(5px); */
    margin-left: -10px;
}

.luck-gauge-label span {
    font-family: "Bebas Neue", sans-serif;
    font-size: 40px;    /* 24px; */
    font-weight: 800;
    color: #10B981; /* Couleur par dÃƒÂ©faut */
    display: block;
    margin-bottom: -12px;
}

.luck-gauge-label small {
    font-family: "Bebas Neue", sans-serif;  /* Couleur par dÃƒÂ©faut */
    font-size: 20px;   /* 11px */
    font-weight: 400;
    color: #6686a0;  /* 9CA3AF */
    letter-spacing: 0px;
    text-transform: uppercase;
    font-weight: 500;
    display: block;
    margin-bottom: -12px;
}

/* valeurs numeriques de la pool */
.luck-stats-grid {
    display: flex;
    flex-direction: column;  /* Une ligne par stat */
    gap: 0px;  /* espacement entre les lignes */
    width: 240px;
    height: 210px;
    margin-top: 0px;
    
    padding: 6px 15px;  /*6px 15px;*/
    /*background: rgba(255, 255, 255, 0.05);*/
    border-radius: 2px;
    background-color: #0e0e10;
}

.luck-stat-item {
    display: flex;
    flex-direction: row;  /* Label ÃƒÂ  gauche, valeur ÃƒÂ  droite */
    justify-content: space-between;
    align-items: center;
    padding: 2px 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    
}

.luck-stat-item:last-child {
    border-bottom: none;  /* Pas de bordure sur la derniÃƒÂ¨re ligne */
}

.luck-stat-label {
    font-size: 11px;
    color: #8899a6;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/*.luck-stat-value {
    font-size: 14px;
    font-weight: bold;
    color: #e1e8ed;
    text-align: right;
}*/

.luck-stat-value {
    font-size: 32px;
    font-weight: bold;
    color: #e1e8ed;
    text-align: right;
}

/* BLOCK LAST PAYMENTS */
.payments-table-wrapper {
    max-height: 400px;
    overflow-y: auto;
    margin-top: 10px;
}

.payments-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

.payments-table th {
    padding: 10px 8px;
    text-align: center;
    color: #8899a6;
    font-weight: 600;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.payments-table td {
    padding: 2px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    color: #e1e8ed;
}

.payments-table a {
    color: #58a6ff;
    text-decoration: none;
}

.payments-table a:hover {
    text-decoration: underline;
}

/* Largeurs personnalisÃƒÂ©es des colonnes */
.payments-table .col-sent {
    width: 10%;  /* Sent */
}

.payments-table td.col-address {
    width: 50%;  /* Address */
    font-family: monospace, Consolas, "Courier New";
    font-size: 0.95em;
    font-weight: 100;
    word-break: break-all;
    text-align: center;
    color: #cccccc;
}

.payments-table td.col-amount {
    width: 15%;  /* Amount */
    font-family: monospace, Consolas, "Courier New";
    font-size: 0.95em;
    font-weight: 100;
    word-break: break-all;
    text-align: center;  /* AlignÃƒÂ© ÃƒÂ  droite */
    background: #32b9101e;
    color: #20d500
}

.payments-table .col-tx {
    width: 25%;  /* Tx */
    font-family: monospace, Consolas, "Courier New";
    font-size: 0.95em;
    font-weight: 200;
    word-break: break-all;
    text-align: center;  /* CentrÃƒÂ© */
}

/* Messages de chargement et d'erreur dans les tableaux */
.loading-message,
.error-message {
    text-align: center !important;
    padding: 40px !important;
    font-size: 14px;
    font-weight: 500;
}

.loading-message {
    color: #58a6ff;
    animation: pulse 1.5s ease-in-out infinite;
}

.error-message {
    color: #f85149;
}

/* Animation du texte Loading */
@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

/* Spinner de chargement */
.spinner {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 3px solid rgba(88, 166, 255, 0.3);
    border-top-color: #58a6ff;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    margin-right: 10px;
    vertical-align: middle;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

.loading-message {
    text-align: center !important;
    padding: 40px !important;
    color: #58a6ff;
    font-size: 14px;
}

.error-message {
    text-align: center !important;
    padding: 40px !important;
    color: #f85149;
    font-size: 14px;
}
/*```

---

## Ã°Å¸â€œâ€¹ Checklist de modification
```
Ã¢ËœÂ 1. Ouvre dashboard.js
Ã¢ËœÂ 2. Cherche la fonction fetchBlocks (Ctrl+F "function fetchBlocks")
Ã¢ËœÂ 3. Remplace TOUTE la fonction par le code ci-dessus
Ã¢ËœÂ 4. Sauvegarde dashboard.js
Ã¢ËœÂ 5. Ouvre dashboard.css
Ã¢ËœÂ 6. Va tout en bas du fichier
Ã¢ËœÂ 7. Colle le CSS du spinner
Ã¢ËœÂ 8. Sauvegarde dashboard.css
Ã¢ËœÂ 9. RafraÃƒÂ®chis le navigateur (Ctrl+F5)
Ã¢ËœÂ 10. Teste en cliquant sur "Page 2"
```

---

## Ã°Å¸â€Â Comment trouver facilement la fonction

**MÃƒÂ©thode 1 : Recherche**
```
1. Ouvre dashboard.js
2. Ctrl+F (rechercher)
3. Tape : function fetchBlocks
4. Appuie sur EntrÃƒÂ©e
5. Tu es directement sur la fonction !
```

**MÃƒÂ©thode 2 : NumÃƒÂ©ro de ligne**
```
Dans ton ÃƒÂ©diteur (VS Code, Notepad++, etc.) :
- Cherche autour de la ligne 140-160
- Ou cherche aprÃƒÂ¨s la fonction "displayBlocks"
```

---

## Ã°Å¸Å½Â¯ RÃƒÂ©sultat attendu

AprÃƒÂ¨s modification, quand tu cliques sur "Page 2", tu verras :
```
Ã¢â€Å’Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â
Ã¢â€â€š  Recent Blocks                             Ã¢â€â€š
Ã¢â€Å“Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¤
Ã¢â€â€š                                            Ã¢â€â€š
Ã¢â€â€š         Ã¢Å¸Â³  Loading blocks...               Ã¢â€â€šÃ¢â€ Â Spinner qui tourne
Ã¢â€â€š            (texte qui pulse)               Ã¢â€â€š
Ã¢â€â€š                                            Ã¢â€â€š
Ã¢â€â€Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Ëœ

        Ã¢â€ â€œ (aprÃƒÂ¨s 0.5-2 secondes)

Ã¢â€Å’Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â
Ã¢â€â€š  Recent Blocks                             Ã¢â€â€š
Ã¢â€Å“Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¤
Ã¢â€â€š Height Ã¢â€â€š Time  Ã¢â€â€š Amount Ã¢â€â€š Share Ã¢â€â€š Status  Ã¢â€â€š
Ã¢â€â€š 123456 Ã¢â€â€š 12:34 Ã¢â€â€š 2500   Ã¢â€â€š 25.5  Ã¢â€â€š Ã¢Å“â€œ       Ã¢â€â€š
Ã¢â€â€š 123455 Ã¢â€â€š 12:30 Ã¢â€â€š 2500   Ã¢â€â€š 30.2  Ã¢â€â€š Ã¢Å“â€œ       Ã¢â€â€š
Ã¢â€â€š ...                                        Ã¢â€â€š
Ã¢â€â€Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Ëœ
```

---

## Ã¢Å¡Â Ã¯Â¸Â Si le spinner ne s'affiche pas

**ProblÃƒÂ¨me possible : cache du navigateur**

Solution :
```
1. Ctrl+Shift+R (rechargement forcÃƒÂ©)
2. Ou F12 Ã¢â€ â€™ Network Ã¢â€ â€™ Coche "Disable cache"
3. Recharge avec F5
```

**VÃƒÂ©rifier que le CSS est bien chargÃƒÂ© :**
```
1. F12 Ã¢â€ â€™ Elements (ou Inspecter)
2. Clique sur "Page 2"
3. Tu dois voir dans le HTML :
   <div class="spinner"></div>
4. Si le spinner ne tourne pas :
   Ã¢â€ â€™ VÃƒÂ©rifie que le CSS est bien sauvegardÃƒÂ©
```*/

/* Status badges - confirmations progressives */
.status-pending-low {
    background: #4a3c1a;
    color: #fbbf24;
    /*border-left: 3px solid #fbbf24;*/
}

.status-pending-mid {
    background: #4a3c1a;
    color: #fbbf24;
    /*border-left: 3px solid #f59e0b;*/
}

.status-pending-high {
    background: #4a3c1a;
    color: #fbbf24;
    /*border: 0.1px solid #ea9e0b;*/
    /*font-weight: 600;*/
}

/* AmÃƒÂ©lioration des badges existants */
.status-badge {
    display: inline-flex; /* inline-block; */
    justify-content: center; /* inutile si inline-block; */
    align-items: center; /* inutile si inline-block; */
    padding: 0px 0px;  /* 0px 12px; */
    border-radius: 2px;
    font-size: 11px;
    font-weight: 400; /*font-weight: 600; */
    /*text-transform: uppercase;*/
    font-family: "Segoe UI", sans-serif, monospace;  /* Police monospace pour alignement */
    min-width: 60px;  /* Largeur minimale pour ÃƒÂ©viter le dÃƒÂ©calage */
    text-align: center;
}

.status-confirmed {
    background: #1a4d2e;
    color: #4ade80;
    /*border-left: 3px solid #4ade80;*/
}

.status-orphan {
    background: #4a1a1a;
    color: #f87171;
    /*border-left: 3px solid #f87171;*/
}
/*```

---

## Ã°Å¸â€œÅ  RÃƒÂ©sultat visuel

**Avant :**
```
Ã¢â€Å’Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â
Ã¢â€â€š Height Ã¢â€â€š Time  Ã¢â€â€š Amount Ã¢â€â€š Share   Ã¢â€â€š TX Hash Ã¢â€â€š Status    Ã¢â€â€š
Ã¢â€Å“Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¤
Ã¢â€â€š 123456 Ã¢â€â€š 12:34 Ã¢â€â€š 2500   Ã¢â€â€š 25.5    Ã¢â€â€š abc...  Ã¢â€â€š Confirmed Ã¢â€â€š
Ã¢â€â€š 123455 Ã¢â€â€š 12:30 Ã¢â€â€š 2500   Ã¢â€â€š -       Ã¢â€â€š def...  Ã¢â€â€š Pending   Ã¢â€â€šÃ¢â€ Â Generic
Ã¢â€â€š 123454 Ã¢â€â€š 12:25 Ã¢â€â€š 2500   Ã¢â€â€š 30.2    Ã¢â€â€š ghi...  Ã¢â€â€š Confirmed Ã¢â€â€š
Ã¢â€â€Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Ëœ
```

**AprÃƒÂ¨s :**
```
Ã¢â€Å’Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â
Ã¢â€â€š Height Ã¢â€â€š Time  Ã¢â€â€š Amount Ã¢â€â€š Share   Ã¢â€â€š TX Hash Ã¢â€â€š Status    Ã¢â€â€š
Ã¢â€Å“Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¼Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â¤
Ã¢â€â€š 123456 Ã¢â€â€š 12:34 Ã¢â€â€š 2500   Ã¢â€â€š 25.5    Ã¢â€â€š abc...  Ã¢â€â€š Confirmed Ã¢â€â€š
Ã¢â€â€š 123455 Ã¢â€â€š 12:30 Ã¢â€â€š 2500   Ã¢â€â€š -       Ã¢â€â€š def...  Ã¢â€â€š 42/120    Ã¢â€â€šÃ¢â€ Â PrÃƒÂ©cis !
Ã¢â€â€š 123454 Ã¢â€â€š 12:25 Ã¢â€â€š 2500   Ã¢â€â€š 30.2    Ã¢â€â€š ghi...  Ã¢â€â€š 95/120    Ã¢â€â€šÃ¢â€ Â Presque !
Ã¢â€â€š 123453 Ã¢â€â€š 12:20 Ã¢â€â€š 2500   Ã¢â€â€š 18.3    Ã¢â€â€š jkl...  Ã¢â€â€š 5/120     Ã¢â€â€šÃ¢â€ Â DÃƒÂ©but
Ã¢â€â€Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Â´Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€â‚¬Ã¢â€Ëœ*/

/* Animation verticale des blocs trouvÃƒÂ©s */

#blocksStackContainer {
    /*background: linear-gradient(180deg, #0d1117 0%, #161b22 100%);*/
    /* border: 0.5px solid #30363d; */
    border-radius: 0px; /* 6 */
    position: relative;
}

#blocksStackCanvas {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    cursor: pointer;
    background: #0e0e10;
}

.block-tooltip {
    position: absolute;
    background: rgba(15, 20, 25, 0.95);
    color: #e1e8ed;
    padding: 8px 12px;
    border-radius: 4px;
    border: 1px solid #38444d;
    font-size: 11px;
    pointer-events: none;
    z-index: 1000;
    display: none;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);
}


/* ========================================
   Network Share Counter 
   ======================================== */

/* NETWORK SHARE COUNTER */
.network-share-container {
    background: transparent;
    padding: 0;
    margin: 0;
}

.network-share-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}

.network-share-label {
    font-size: 11px;
    color: #8899a6;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.network-share-value {
    font-size: 14px;
    color: #ffffff;
    font-weight: 700;
}

/* Barre de progression */
.network-share-bar-bg {
    width: 100%;
    height: 6px;
    background: #2a2a2e;
    border-radius: 3px;
    overflow: hidden;
    position: relative;
    margin-bottom: 10px;
}

.network-share-bar-fill {
    height: 100%;
    background: linear-gradient(90deg, #ffffff 0%, #d0d0d0 100%);
    border-radius: 3px;
    transition: width 0.5s ease-in-out;
    box-shadow: 0 0 6px rgba(255, 255, 255, 0.3);
}

/* DÃƒÂ©tails sous la barre */
.network-share-details {
    display: flex;
    justify-content: space-between;
    font-size: 10px;
    color: #8899a6;
}

.share-detail {
    display: flex;
    gap: 4px;
}

.detail-label {
    color: #657786;
}

.detail-value {
    color: #e1e8ed;
    font-weight: 500;
}

/* Couleurs selon le pourcentage */
.network-share-bar-fill.very-low {
    background: linear-gradient(90deg, #EF4444 0%, #DC2626 100%);
    box-shadow: 0 0 8px rgba(239, 68, 68, 0.4);
}

.network-share-bar-fill.low {
    background: linear-gradient(90deg, #F59E0B 0%, #D97706 100%);
    box-shadow: 0 0 8px rgba(245, 158, 11, 0.4);
}

.network-share-bar-fill.medium {
    background: linear-gradient(90deg, #3B82F6 0%, #2563EB 100%);
    box-shadow: 0 0 8px rgba(59, 130, 246, 0.4);
}

.network-share-bar-fill.high {
    background: linear-gradient(90deg, #10B981 0%, #059669 100%);
    box-shadow: 0 0 8px rgba(16, 185, 129, 0.4);
}

.network-share-bar-fill.very-high {
    background: linear-gradient(90deg, #8B5CF6 0%, #7C3AED 100%);
    box-shadow: 0 0 8px rgba(139, 92, 246, 0.4);
}

/* ========================================
   TABS SYSTEM
   ======================================== */

/* Navigation des onglets */
.tabs-navigation {
    display: flex;
    gap: 0;
    background: #192633;
    padding: 0;
    margin: -25px -25px 0 -25px;
    border-bottom: 2px solid var(--border-color);
}

.tab-btn {
    flex: 1;
    background: transparent;
    border: none;
    color: #8899a6;
    padding: 12px 20px;
    font-family: "Bebas Neue"; /* --- */
    font-size: 24px;  /* 14px */
    font-weight: 400;
    cursor: pointer;
    transition: all 0.3s ease;
    position: relative;
    border-bottom: 3px solid transparent;
}

.tab-btn:hover {
    background: rgba(26, 31, 46, 0.5);
    color: #1da1f2;
}

.tab-btn.active {
    color: #1da1f2;
    border-bottom-color: #1da1f2;
    background: rgba(26, 31, 46, 0.3);
}

/* Contenu des onglets */
.tab-content {
    display: none;
    animation: fadeIn 0.3s ease;
}

.tab-content.active {
    display: block;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Ajustement du blocks-header pour les tabs */
.tab-content .blocks-header {
    margin-top: 20px;
}

/* Responsive */
@media (max-width: 768px) {
    .tabs-navigation {
        flex-direction: column;
    }
    
    .tab-btn {
        border-bottom: 1px solid var(--border-color);
        border-left: 3px solid transparent;
    }
    
    .tab-btn.active {
        border-bottom-color: var(--border-color);
        border-left-color: #1da1f2;
    }
}

.contenu-espacÃ© {
    padding: 10px 0; /* 30px en haut et en bas */
    background: #1b1b1b; /* #151617 */
}

.contenu-espacÃ©-top {
    padding: 30px 0; /* 30px en haut et en bas */
    background: rgb(255, 0, 0);
}

/* ========================================
   STRATUM STATUS INDICATOR CSS
   Ã€ ajouter Ã  la fin de dashboard.css
   ======================================== */

/* Barre de statut sous l'adresse Stratum */
.stratum-status-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 10px;
    padding: 8px 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 4px;
    border-left: 3px solid transparent;
    transition: all 0.3s ease;
}

/* Pastille (dot) */
.status-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #666;
    flex-shrink: 0;
    transition: all 0.3s ease;
    box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4);
}

/* Animation pulsation pour la pastille verte */
.status-dot.online {
    background: #10B981;
    animation: pulse-green 2s infinite;
}

.status-dot.offline {
    background: #EF4444;
}

.status-dot.checking {
    background: #F59E0B;
    animation: pulse-orange 1s infinite;
}

/* Animations de pulsation */
@keyframes pulse-green {
    0% {
        box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);
    }
    50% {
        box-shadow: 0 0 0 6px rgba(16, 185, 129, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
    }
}

@keyframes pulse-orange {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.5;
    }
}

/* Texte de statut */
.status-text {
    color: #8899a6;
    font-size: 11px;
    font-weight: 500;
    flex: 1;
}

.status-text.online {
    color: #10B981;
}

.status-text.offline {
    color: #EF4444;
}

.status-text.checking {
    color: #F59E0B;
}

/* Ping */
.status-ping {
    color: #e1e8ed;
    font-size: 11px;
    font-weight: 600;
    font-family: 'Courier New', monospace;
    min-width: 50px;
    text-align: right;
}

.status-ping.good {
    color: #10B981;
}

.status-ping.medium {
    color: #F59E0B;
}

.status-ping.bad {
    color: #EF4444;
}

/* Bordure gauche selon le statut */
.stratum-status-bar.online {
    border-left-color: #10B981;
    background: rgba(16, 185, 129, 0.1);
}

.stratum-status-bar.offline {
    border-left-color: #EF4444;
    background: rgba(239, 68, 68, 0.1);
}

.stratum-status-bar.checking {
    border-left-color: #F59E0B;
}

/* Style pour le graphique de latence */
#pingGraphContainer {
    font-family: 'Segoe UI', 'Monaco', monospace;
    width: 100%;
}

#pingGraph {
    width: 100%;
    min-width: 250px;
}

#pingGraph svg {
    display: block;
    width: 100%;
    height: auto;
    min-height: 100px;
}

.graph-title {
    font-size: 11px;
    color: rgba(255,255,255,0.7);
    margin-bottom: 8px;
    text-align: center;
    font-weight: 600;
    letter-spacing: 0.5px;
    text-transform: uppercase;
}

/* Animation pour les nouvelles donnÃ©es */
@keyframes pingUpdate {
    0% { transform: scale(1); }
    50% { transform: scale(1.05); }
    100% { transform: scale(1); }
}

.status-ping.good {
    color: #4CAF50 !important;
    font-weight: bold;
}

.status-ping.medium {
    color: #FF9800 !important;
}

.status-ping.bad {
    color: #F44336 !important;
    animation: pulse 2s infinite;
}

@keyframes pulse {
    0% { opacity: 1; }
    50% { opacity: 0.7; }
    100% { opacity: 1; }
}

/* Style pour les points du graphique */
#pingGraph circle {
    transition: r 0.3s ease;
}

#pingGraph circle:hover {
    r: 4;
    fill: #fff !important;
    stroke-width: 2;
}

/* FIN DE Style pour le graphique de latence */

/* ========================================
   STYLES MINIMAUX POUR LE MONITOR PING
   ======================================== */

.status-dot {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    margin-right: 8px;
    background-color: #666;
}

.status-dot.online {
    background-color: #4CAF50;
    box-shadow: 0 0 8px rgba(76, 175, 80, 0.5);
}

.status-dot.offline {
    background-color: #F44336;
}

.status-dot.checking {
    background-color: #FF9800;
    animation: pulse 1.5s infinite;
}

@keyframes pulse {
    0% { opacity: 1; }
    50% { opacity: 0.5; }
    100% { opacity: 1; }
}

.status-text {
    font-weight: 500;
    margin-right: 10px;
}

.status-text.online {
    color: #4CAF50;
}

.status-text.offline {
    color: #F44336;
}

.status-text.checking {
    color: #FF9800;
}

.status-ping {
    font-family: 'Courier New', monospace;
    font-size: 12px;
}

.status-ping.good {
    color: #4CAF50;
}

.status-ping.medium {
    color: #FF9800;
}

.status-ping.bad {
    color: #F44336;
}

.stratum-status-bar {
    display: flex;
    align-items: center;
    padding: 8px 12px;
    background: rgba(0, 0, 0, 0.2);
    border-radius: 6px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    margin: 10px 0;
}

/* Style pour les titres */
.chart-title {
    font-size: 20px;
    font-weight: 400; /* Valeur correcte pour Bebas Neue */
    margin: 24;
    color: #6686a0; /*AC0000 #bababa; #a3a3a3*/ 
    padding: 20;
    font-family: "Bebas Neue", sans-serif; /* font-family: "Bebas Neue", sans-serif; */
    line-height: 0.8;
    display: inline-block; /* Pour rester sur la mÃªme ligne que la valeur */
}

/* Style pour les valeurs */
.chart-value {
    font-size: 40px;
    font-weight: 600;
    margin: 0 0 0 0; /* â† marge gauche automatique pousse Ã  droite */ /* 20 */
    color: #d4d4d4; /* #24afff #c83c3c; #d4d4d4 Ou une autre couleur pour diffÃ©rencier */
    padding: 0px;
    font-family: "Bebas Neue", sans-serif;
    line-height: 0.8;
    margin-left: 0px; /* 40px Espacement entre titre et valeur */
    /*margin-right: 0px;*/
    /*text-align: right; /* â† Ajoutez cette ligne */
    /*display: block; /* Important pour que text-align fonctionne */
    /*width: auto; /* S'adapte au contenu */
}

.chart-value-big {
    font-size: 60px; /*80px;*/
    font-weight: 600;
    margin: 0 0 0 0; /* â† marge gauche automatique pousse Ã  droite */ /* 20 */
    color: #d4d4d4; /* #24afff #c83c3c; #d4d4d4 Ou une autre couleur pour diffÃ©rencier */
    padding: 0px;
    font-family: "Bebas Neue", sans-serif;
    line-height: 0.8;
    margin-left: 0px; /* 40px Espacement entre titre et valeur */
    /*margin-right: 0px;*/
    /*text-align: right; /* â† Ajoutez cette ligne */
    /*display: block; /* Important pour que text-align fonctionne */
    /*width: auto; /* S'adapte au contenu */
}

.chart-value-little {
    font-size: 20px;
    font-weight: 400;
    margin: 0 0 0 0; /* â† marge gauche automatique pousse Ã  droite */ /* 20 */
    color: #d4d4d4; /* #24afff #c83c3c; #d4d4d4 Ou une autre couleur pour diffÃ©rencier */
    padding: 0px;
    font-family: "Bebas Neue", sans-serif;
    line-height: 0.8;
    margin-left: 0px; /* 40px Espacement entre titre et valeur */
    text-align: left;
    /*margin-right: 0px;*/
    /*text-align: right; /* â† Ajoutez cette ligne */
    /*display: block; /* Important pour que text-align fonctionne */
    /*width: auto; /* S'adapte au contenu */
}

/* Décimales et unités en plus petit */
.chart-value .decimal,
.chart-value .unit {
    font-size: 24px;
    font-family: "Bebas Neue", sans-serif;
    font-weight: 400;
}

/* Décimales et unités en plus petit */
.chart-value-big .decimal,
.chart-value-big .unit {
    font-size: 24px;
    font-family: "Bebas Neue", sans-serif;
    font-weight: 400;
}



/* Conteneur principal */
.chart-header,
.luck-stat-item,
.network-share-header {
    display: flex;
    align-items: center; /* Aligne verticalement titre et valeur */
    min-height: 10px; /* Hauteur minimale */
    padding: 10px 0; /* Espacement vertical */
}

.background {
    background: #1b1b1b;
    /*max-width: 800px;*/
    margin: 0 auto;
    padding: 10px;
    box-shadow: 0 0 10px 10px #1b1b1b;
}

.stats-bg {
    background: #0E0E10;
    /*max-width: 800px;*/
    margin: 0 auto;
    padding: 10px;
    
}

/* Luck colors */
.luck-green {
    color: #10B981 !important;
    font-weight: 600;
}

.luck-gray {
    color: #8899a6 !important;
    font-weight: 400;
}
/* ========================================
   WORKERS TAB - LIVE SHARES VISUALIZATION
   ======================================== */

.workers-table {
    table-layout: fixed;
}

.workers-table th:nth-child(1) {
    width: 25%;
}

.workers-table th:nth-child(2) {
    width: 15%;
}

.workers-table th:nth-child(3) {
    width: 60%;
}

/* Container pour les shares en temps réel */

.share-block:hover {
    transform: translateY(-2px);
    box-shadow: 0 4px 8px rgba(63, 185, 80, 0.3);
}

.share-block::after {
    content: attr(data-diff);
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, 0.9);
    color: #fff;
    padding: 4px 8px;
    border-radius: 0px;  /* 4px */----------------------------------------------
    /*font-size: 11px;
    white-space: nowrap;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s;
    margin-bottom: 4px;*/
}

.share-block:hover::after {
    opacity: 1;
}

@keyframes shareAppear {
    from {
        opacity: 0;
        transform: scale(0.8) translateY(10px);
    }
    to {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

/* Animation SEULEMENT pour les nouveaux */
.share-block.new {
    animation: shareFlash 0.5s ease-out !important;
}

@keyframes shareFlash {
    0% {
        background-color: #ffff00;
        box-shadow: 0 0 10px #ffff00;
        transform: scale(1.3);
    }
    50% {
        background-color: #00ff00;
        box-shadow: 0 0 5px #00ff00;
        transform: scale(1.15);
    }
    100% {
        background-color: #50fa7b;
        box-shadow: none;
        transform: scale(1);
    }
}

/* État vide */
.shares-live-container.empty::before {
    content: 'Waiting for shares...';
    color: #8899a6;
    font-size: 12px;
    font-style: italic;
    /*display: none !important;*/
}

/* Worker address styling */
.worker-address {
    font-family: 'Courier New', monospace;
    font-size: 12px;
    color: #58a6ff;
}

/* Hashrate column */
.worker-hashrate {
    font-weight: 600;
    color: #3fb950;
}

/* Message de block trouvé */
.block-found-message {
    color: #ffd700;
    font-weight: 600;
    text-align: center;
    padding: 12px;
    background: rgba(255, 215, 0, 0.1);
    border-radius: 4px;
    margin: 8px;
    animation: blockFoundFlash 1s ease infinite;
}

@keyframes blockFoundFlash {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.6;
    }
}

/* Stats pour les shares */
.shares-stats {
    display: flex;
    justify-content: space-between;
    padding: 4px 8px;
    background: rgba(88, 166, 255, 0.1);
    border-radius: 4px;
    margin-top: 4px;
    font-size: 11px;
    color: #8899a6;
}

.shares-stats span {
    color: #58a6ff;
    font-weight: 600;
}

/* Responsive */
@media (max-width: 768px) {
    .workers-table th:nth-child(1) {
        width: 30%;
    }
    
    .workers-table th:nth-child(2) {
        width: 20%;
    }
    
    .workers-table th:nth-child(3) {
        width: 50%;
    }
    
    .worker-address {
        font-size: 10px;
        word-break: break-all;
    }
}

/* Fix pour le graphe Hashrate History décentré */
.chart-wrapper canvas {
    width: 100% !important;
    height: auto !important;
}

#hashrateChart, #balanceChart {
    display: block;
    width: 100% !important;
}

/* pop up overlay BLOCK FOUND*/
/**
 * CSS à ajouter pour l'overlay
 */
const blockFoundCSS = `
.block-found-overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.85);
    backdrop-filter: blur(5px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    opacity: 0;
    transition: opacity 0.3s ease;
    border-radius: 8px;
    overflow: hidden;
}

.block-found-overlay.active {
    opacity: 1;
}

.block-found-overlay.fading {
    opacity: 0;
}

.block-found-content {
    text-align: center;
    padding: 30px;
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(5, 150, 105, 0.2));
    border: 2px solid rgba(16, 185, 129, 0.3);
    border-radius: 12px;
    max-width: 80%;
    animation: pulse 2s infinite;
}

.block-found-icon {
    font-size: 48px;
    margin-bottom: 15px;
    animation: bounce 1s infinite alternate;
}

.block-found-title {
    font-size: 28px;
    font-weight: bold;
    color: #10b981;
    margin-bottom: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    text-shadow: 0 0 10px rgba(16, 185, 129, 0.5);
}

.block-found-text {
    font-size: 16px;
    color: #d1d5db;
    max-width: 300px;
    line-height: 1.5;
}

@keyframes pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4);
    }
    70% {
        box-shadow: 0 0 0 15px rgba(16, 185, 129, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
    }
}

@keyframes bounce {
    from {
        transform: translateY(0);
    }
    to {
        transform: translateY(-10px);
    }
}

/* Assure-toi que le conteneur du tableau a une position relative */
.table-container {
    position: relative;
    min-height: 200px;
}
`;

// Ajouter le CSS à la page
(function addBlockFoundCSS() {
    if (!document.getElementById('block-found-styles')) {
        const style = document.createElement('style');
        style.id = 'block-found-styles';
        style.textContent = blockFoundCSS;
        document.head.appendChild(style);
    }
})();

/* ========================================
   WORKERS TAB STYLES
   ======================================== */

/* Badge étoile pour l'adresse principale */
.main-worker-badge {
    color: #ffd700;
    font-size: 16px;
    margin-right: 5px;
    display: inline-block;
    vertical-align: middle;
}

/* Ligne du worker principal en surbrillance */
tr.main-worker {
    background-color: rgba(255, 215, 0, 0.05) !important;
}

tr.main-worker:hover {
    background-color: rgba(255, 215, 0, 0.1) !important;
}

/* Nom du worker (partie après le point) */
.worker-name {
    color: #1da1f2;
    font-weight: 600;
    font-size: 14px;
}

/* Adresse courte entre parenthèses */
.worker-short-addr {
    color: #8899a6;
    font-size: 11px;
    margin-left: 4px;
}

/* Adresse complète (sans worker name) */
.worker-address {
    color: #ffffff;
    font-size: 13px;
    font-family: 'Courier New', monospace;
}

/* Container du worker display */
.worker-display {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

/* Hashrate des workers */
.worker-hashrate {
    font-weight: 600;
    color: #50fa7b;
    font-size: 14px;
}
/* CSS pour stabiliser la page */
/* Stabiliser la hauteur de l'onglet Workers */
#workersTab {
    min-height: 400px; /* Hauteur minimale fixe */
}

/* Stats toujours à la même hauteur */
.shares-stats {
    height: 20px;
    min-height: 20px;
    overflow: hidden;
}

/* Table workers avec hauteur stable */
.workers-table tbody {
    /* Optionnel: hauteur minimale pour éviter le saut */
    min-height: 200px;
}

/* Ligne du worker avec hauteur fixe */
.workers-table tbody tr {
    height: 60px; /* Hauteur fixe par ligne */
}

.workers-table tbody td {
    vertical-align: middle;
    padding: 8px;
}

/* Container de la table avec hauteur stable */
.blocks-table-container {
    min-height: 300px; /* Évite le rebond quand les workers changent */
    overflow-y: auto;
}

/*Si le problème persiste, ajoute aussi */
/* Forcer une hauteur fixe pour l'ensemble du tab */
.tab-content {
    min-height: 500px;
    position: relative;
}

/* Éviter le reflow lors des mises à jour */
.workers-table {
    table-layout: fixed; /* Les colonnes gardent leur largeur */
    width: 100%;
}

.workers-table th:nth-child(1),
.workers-table td:nth-child(1) {
    width: 25%; /* Worker */
}

.workers-table th:nth-child(2),
.workers-table td:nth-child(2) {
    width: 15%; /* Hashrate */
}

.workers-table th:nth-child(3),
.workers-table td:nth-child(3) {
    width: 60%; /* Live Shares */
}

/* Animation smooth sans rebond */
.share-block.new {
    animation: shareAppear 0.3s ease-out forwards;
}

@keyframes shareAppear {
    from {
        opacity: 0;
        transform: scaleX(0);
        transform-origin: left;
    }
    to {
        opacity: 1;
        transform: scaleX(1);
    }
}

/* Stabiliser la barre de stats */
.shares-stats {
    height: 20px;
    min-height: 20px;
    max-height: 20px;
    overflow: hidden;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 11px;
    color: #8899a6;
    padding: 2px 4px;
    margin-top: 2px;
    /* Éviter le clignotement */
    will-change: contents;
    backface-visibility: hidden;
}

.shares-stats div {
    display: flex;
    gap: 4px;
    white-space: nowrap; /* Empêche le retour à la ligne */
}

.shares-stats span {
    display: inline-block;
    /* Largeur minimale pour éviter le saut */
    min-width: 30px;
    text-align: right;
}

/* Éviter le clignotement des chiffres */
.shares-stats span:last-child {
    font-variant-numeric: tabular-nums; /* Chiffres de largeur fixe */
    min-width: 40px;
}

/* Transition douce pour les changements */
.shares-stats {
    transition: none; /* Pas de transition pour éviter le clignotement */
}

/* Force GPU rendering pour éviter les repaints */
.shares-stats,
.shares-stats span {
    transform: translateZ(0);
    -webkit-font-smoothing: antialiased;
}

/* Largeur fixe pour les nombres */
#count-${workerId},
#diff-${workerId} {
    display: inline-block;
    min-width: 35px;
    text-align: right;
    font-family: 'Courier New', monospace; /* Police monospace pour largeur fixe */
}
/* fin de Stabiliser la barre de stats */

/* Blocs verts stables (pas d'animation par défaut) */
.share-block {
    display: inline-block;
    background-color: #50fa7a; /* #50fa7a Vert stable */
    border-radius: 0px;  /* 2 */
    border-width: 0px 1px 1px 0px;
    border-style: solid; /* border-style: solid; */
    border-color: #13151A;
    margin: 0px; /*------------------------0 0px;---------------------------------------*/
    flex-shrink: 0;
    transition: none; /* Pas de transition pour les anciens blocs */
}
.share-block {
        min-width: 0px; /* 3 */
    }

/* Animation de clignotement pour les NOUVEAUX blocs seulement */
.share-block.new {
    animation: shareFlash 0.5s ease-out;
}

@keyframes shareFlash {
    0% {
        background-color: #ffff00; /* Jaune vif */
        box-shadow: 0 0 10px #ffff00;
        transform: scale(1.3);
    }
    50% {
        background-color: #00ff00; /* Vert clair */
        box-shadow: 0 0 5px #00ff00;
        transform: scale(1.15);
    }
    100% {
        background-color: #50fa7b; /* Vert normal */
        box-shadow: none;
        transform: scale(1);
    }
}

/* Container de shares - hauteur augmentée, scrollbar masquée */
.shares-live-container {
    /*height: 16px; /* Augmenté de 16px à 24px -------------------------------------------------------------------------------*/
    /*min-height: 256px; /* 72 */
    max-height: auto; /* 24 - 512px */
    overflow-x: auto; /* auto */
    overflow-y: hidden; /* hidden */
    display: flex;
    align-items: flex-end;
    gap: 4; /* 1px */
    border: 0px;
    padding: 2px 4px;
    scroll-behavior: smooth;
    flex-wrap: wrap;
    background: rgba(15, 20, 30, 0.4);
    border-radius: 4px;

    /* Masquer la scrollbar */
    scrollbar-width: none; /* Firefox */
    -ms-overflow-style: none; /* IE/Edge */
}

/* Masquer scrollbar pour Chrome/Safari */
.shares-live-container::-webkit-scrollbar {
    display: none;
}

/* Miner Address Display */
.miner-address-display {
    /*background: #0E0E10; /*linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);*/
    border: 0px 0px 2px 0px solid #2a4a7f;
    border-radius: 0px;
    padding: 0px 0px;
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 0px;
    text-align: left;
    /*box-shadow: 0 4px 15px rgba(0, 162, 255, 0.1);*/
}

.address-label {
    font-size: 14px;
    font-weight: 600;
    color: #64b5f6;
    text-transform: uppercase;
    letter-spacing: 1px;
    white-space: nowrap;
    flex-shrink: 0;
}

.address-value {
    font-family: 'Courier New', monospace;
    font-size: 32px;
    font-weight: 400;
    color: #D4D4D4;
    /*background: #AC0000; /* 151617 */
    padding: 8px 15px;
    border-radius: 0px;
    border: 0px solid rgba(100, 181, 246, 0.2);
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
}/* FIN DE Miner Address Display */

/* FIN DE GRAPHES BALANCES ET HASHRATE COTE A COTE */
.charts-row {
    display: flex;
    flex-wrap: wrap;
    gap: 0px; /* Espace entre les graphiques */
    margin-bottom: 20px;
}

.chart-container {
    flex: 1;
    min-width: 300px; /* Largeur minimale pour éviter que ça devienne trop petit */
    box-sizing: border-box;
}

/* Pour les écrans plus petits, on repasse en colonne */
@media (max-width: 768px) {
    .charts-row {
        flex-direction: column;
    }
}/* FIN DE GRAPHES BALANCES ET HASHRATE COTE A COTE */

/* ============================================
   MODAL PLEIN ÉCRAN HASHRATE
   ============================================ */

.fullscreen-btn {
    background: rgba(29, 161, 242, 0.1);
    border: 1px solid rgba(29, 161, 242, 0.3);
    color: #1da1f2;
    padding: 2px 10px;
    border-radius: 0px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-left: 10px;
}

.fullscreen-btn:hover {
    background: rgba(29, 161, 242, 0.2);
    border-color: #1da1f2;
    transform: scale(1.05);
}

.fullscreen-modal {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.95);
    z-index: 10000;
    animation: fadeIn 0.3s ease;
}

.fullscreen-modal.active {
    display: flex;
    align-items: center;
    justify-content: center;
}

.fullscreen-modal-content {
    width: 95%;
    height: 95%;
    background: #1a1d29;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    box-shadow: 0 10px 50px rgba(0, 0, 0, 0.5);
    animation: slideUp 0.3s ease;
}

.fullscreen-modal-header {
    padding: 20px 30px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.fullscreen-modal-header h2 {
    margin: 0;
    color: #ffffff;
    font-size: 24px;
    font-weight: 600;
}

.fullscreen-modal-header h2 span {
    color: #1da1f2;
    font-family: monospace;
    font-size: 18px;
}

.fullscreen-controls {
    display: flex;
    align-items: center;
    gap: 20px;
}

.close-fullscreen-btn {
    background: rgba(255, 59, 48, 0.1);
    border: 1px solid rgba(255, 59, 48, 0.3);
    color: #ff3b30;
    padding: 8px;
    border-radius: 0px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

.close-fullscreen-btn:hover {
    background: rgba(255, 59, 48, 0.2);
    border-color: #ff3b30;
    transform: scale(1.05);
}

.fullscreen-modal-body {
    flex: 1;
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.fullscreen-modal-body canvas {
    max-width: 100%;
    max-height: 100%;
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes slideUp {
    from {
        transform: translateY(50px);
        opacity: 0;
    }
    to {
        transform: translateY(0);
        opacity: 1;
    }
}

/* Responsive */
@media (max-width: 768px) {
    .fullscreen-modal-content {
        width: 100%;
        height: 100%;
        border-radius: 0;
    }
    
    .fullscreen-modal-header {
        flex-direction: column;
        gap: 15px;
        align-items: flex-start;
    }
    
    .fullscreen-controls {
        width: 100%;
        justify-content: space-between;
    }
    
    .fullscreen-modal-header h2 {
        font-size: 18px;
    }
}
/* ============================================
   FIN DE MODAL PLEIN ÉCRAN HASHRATE
   ============================================ */

   /* Masquer la colonne "Your Share" en mode pool */
.blocks-table.pool-mode th:nth-child(5),
.blocks-table.pool-mode td:nth-child(5) {
    display: none;
}

#paymentsPagination {
    position: relative;
    z-index: 100;
}

#paymentsPagination button {
    color: #ffffff !important;
    background: #1a2332 !important;
    border: 1px solid #3a4a62 !important;
    padding: 5px 12px !important;
    cursor: pointer !important;
}

#paymentsPagination button:hover {
    background: #2a3342 !important;
}

#paymentsPagination button.active {
    background: #1da1f2 !important;
}

.pagination button {
    display: inline-block !important;
    background: #2a3f5f !important;
    color: #ffffff !important;
    border: 1px solid #3a5a7f !important;
    padding: 6px 12px !important; /* 8 15 */
    margin: 0 5px !important;
    cursor: pointer !important;
    border-radius: 4px !important;
}

.pagination button:hover {
    background: #3a4f6f !important;
}

.pagination button.active {
    background: #1da1f2 !important;
}

.pagination button:disabled {
    opacity: 0.5 !important;
    cursor: not-allowed !important;
}

.pagination .page-info {
    color: #8899a6 !important;
    margin: 0 10px !important;
}

/* ============================================================
   PAYOUT THRESHOLD v2 — CSS
   📍 Remplace entièrement le précédent payout_threshold.css
      Coller à la FIN de dashboard.css
   ============================================================ */


/* ── BOUTON ⚙ PAYOUT ── */
.payout-threshold-btn {
    background: rgba(29, 161, 242, 0.1);
    border: 1px solid rgba(29, 161, 242, 0.3);
    color: #1da1f2;
    padding: 4px 12px;
    border-radius: 0px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    margin-left: 14px;
    vertical-align: middle;
    white-space: nowrap;
    flex-shrink: 0;
}
.payout-threshold-btn:hover {
    background: rgba(29, 161, 242, 0.2);
    border-color: #1da1f2;
    transform: scale(1.03);
}


/* ── OVERLAY ── */
.payout-modal-overlay {
    display: none;
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: rgba(0, 0, 0, 0.92);
    z-index: 10000;
    animation: fadeIn 0.3s ease;
    align-items: center;
    justify-content: center;
}
.payout-modal-overlay.active {
    display: flex;
}


/* ── CONTENU DU MODAL ── */
.payout-modal-content {
    width: 50%;                   /* Largeur du modal — ajuster si besoin */
    max-height: 90vh;
    background: #1a1d29;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    box-shadow: 0 10px 50px rgba(0, 0, 0, 0.5);
    animation: slideUp 0.3s ease;
    overflow: hidden;
}


/* ── HEADER ── */
.payout-modal-header {
    padding: 20px 30px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-shrink: 0;
}
.payout-modal-header h2 {
    margin: 0;
    color: #ffffff;
    font-size: 22px;
    font-weight: 600;
    display: flex;
    align-items: baseline;
    gap: 12px;
    flex-wrap: wrap;
}
.payout-modal-header h2 span {
    color: #1da1f2;
    font-family: monospace;
    font-size: 13px;
    opacity: 0.85;
}


/* ── BODY ── */
.payout-modal-body {
    flex: 1;
    padding: 30px 40px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 24px;
}


/* ── EXPLICATION ── */
.payout-info-block {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.payout-info-text {
    font-size: 13px;
    color: #8899a6;
    line-height: 1.6;
    text-align: center;
}
.payout-info-security {
    font-size: 12px;
    color: #5a7a8a;
    border: 1px solid rgba(29, 161, 242, 0.15);
    border-radius: 6px;
    padding: 10px 16px;
    background: rgba(29, 161, 242, 0.04);
    text-align: left;
}


/* ── VALEUR : champ libre ── */
.payout-value-display {
    display: flex;
    align-items: baseline;
    gap: 10px;
}

.payout-value-input {
    background: transparent;
    border: none;
    border-bottom: 2px solid #1da1f2;   /* Soulignement bleu — changer couleur si besoin */
    color: #ffffff;
    font-size: 52px;                     /* Taille de la valeur — ajuster si besoin */
    font-weight: 700;
    font-family: 'Courier New', monospace;
    width: 340px;                        /* Largeur du champ — ajuster si besoin */
    text-align: right;
    outline: none;
    -moz-appearance: textfield;          /* Masque flèches Firefox */
}
/* Masque flèches Chrome/Safari */
.payout-value-input::-webkit-outer-spin-button,
.payout-value-input::-webkit-inner-spin-button {
    -webkit-appearance: none;
}
.payout-value-input:focus {
    border-bottom-color: #58a6ff;
}

.payout-value-unit {
    font-size: 18px;
    font-weight: 600;
    color: #1da1f2;
    text-transform: uppercase;
    letter-spacing: 1px;
}


/* ── SLIDER ── */
.payout-slider-wrapper {
    width: 50%;                          /* Largeur du slider — ajuster si besoin */
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.payout-slider {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    height: 6px;
    border-radius: 3px;
    background: linear-gradient(
        to right,
        #1da1f2 var(--slider-pct, 50%),
        #2a3a4a var(--slider-pct, 50%)
    );
    outline: none;
    cursor: pointer;
}

.payout-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #1da1f2;
    border: 2px solid #ffffff;
    cursor: pointer;
    box-shadow: 0 0 8px rgba(29, 161, 242, 0.5);
    transition: transform 0.1s ease, box-shadow 0.1s ease;
}
.payout-slider::-webkit-slider-thumb:hover {
    transform: scale(1.2);
    box-shadow: 0 0 14px rgba(29, 161, 242, 0.8);
}
.payout-slider::-moz-range-thumb {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: #1da1f2;
    border: 2px solid #ffffff;
    cursor: pointer;
}

/* Labels ticks */
.payout-slider-ticks {
    display: flex;
    justify-content: space-between;
    width: 100%;
}
.payout-slider-ticks span {
    font-size: 10px;
    color: #4a6a7a;
    flex: 1;
    text-align: center;
}
.payout-slider-ticks span:first-child { text-align: left; }
.payout-slider-ticks span:last-child  { text-align: right; }


/* ── SÉPARATEUR ── */
.payout-separator {
    width: 100%;
    height: 1px;
    background: rgba(255, 255, 255, 0.07);
}


/* ── ÉTAPES ── */
.payout-step {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.payout-step-label {
    font-size: 11px;
    font-weight: 700;
    color: #1da1f2;
    text-transform: uppercase;
    letter-spacing: 1px;
}
.payout-field-label {
    font-size: 12px;
    color: #8899a6;
}

.payout-textarea {
    width: 100%;
    background: #0d1117;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 6px;
    color: #c9d1d9;
    font-family: 'Courier New', monospace;
    font-size: 12px;
    padding: 10px 14px;
    resize: none;
    line-height: 1.5;
    outline: none;
    transition: border-color 0.2s ease;
}
.payout-textarea:focus {
    border-color: rgba(29, 161, 242, 0.5);
}
.payout-textarea-readonly {
    cursor: pointer;
    color: #58a6ff;
}

/* Boutons */
.payout-btn-generate,
.payout-btn-copy,
.payout-btn-apply {
    padding: 8px 20px;
    border-radius: 0px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
    align-self: flex-start;
}
.payout-btn-generate {
    background: rgba(29, 161, 242, 0.15);
    border: 1px solid rgba(29, 161, 242, 0.4);
    color: #1da1f2;
}
.payout-btn-generate:hover {
    background: rgba(29, 161, 242, 0.25);
    border-color: #1da1f2;
}
.payout-btn-copy {
    background: rgba(88, 166, 255, 0.1);
    border: 1px solid rgba(88, 166, 255, 0.3);
    color: #58a6ff;
    font-size: 12px;
    padding: 5px 14px;
}
.payout-btn-copy:hover {
    background: rgba(88, 166, 255, 0.2);
}
.payout-btn-apply {
    background: rgba(63, 185, 80, 0.15);
    border: 1px solid rgba(63, 185, 80, 0.4);
    color: #3fb950;
    padding: 10px 28px;
    font-size: 14px;
    align-self: center;
}
.payout-btn-apply:hover {
    background: rgba(63, 185, 80, 0.25);
    border-color: #3fb950;
    transform: scale(1.02);
}


/* ── FEEDBACK ── */
.payout-feedback {
    width: 100%;
    padding: 12px 18px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    text-align: center;
}
.payout-feedback.success {
    background: rgba(63, 185, 80, 0.1);
    border: 1px solid rgba(63, 185, 80, 0.3);
    color: #3fb950;
}
.payout-feedback.error {
    background: rgba(248, 81, 73, 0.1);
    border: 1px solid rgba(248, 81, 73, 0.3);
    color: #f85149;
}


/* ── RESPONSIVE ── */
@media (max-width: 900px) {
    .payout-modal-content { width: 90%; }
    .payout-slider-wrapper { width: 80%; }
    .payout-value-input { font-size: 36px; width: 240px; }
}

/* ── TOP MINERS ── */
.period-btn {
    background: transparent;
    border: 1px solid #1da1f2;
    color: #1da1f2;
    padding: 4px 10px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
    transition: all 0.2s;
}
.period-btn:hover, .period-btn.active {
    background: #1da1f2;
    color: #fff;
}

/* ============================================
   PPLNS CHARGE GAUGE - JERRICAN
   ============================================ */

.pplns-gauge-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 10px;
}

.pplns-gauge-wrapper {
    position: relative;
    width: 80px;
    height: 110px;
}

.pplns-jerrican {
    width: 100%;
    height: 100%;
}

/* Liquid fill animation */
.pplns-liquid {
    transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Wave animation on top of liquid */
.pplns-wave {
    animation: pplns-wave-motion 2s ease-in-out infinite;
}

@keyframes pplns-wave-motion {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(3px); }
}

/* Glow effect when charging */
.pplns-glow {
    filter: drop-shadow(0 0 4px rgba(0, 200, 255, 0.5));
}

.pplns-glow-full {
    filter: drop-shadow(0 0 8px rgba(0, 255, 100, 0.7));
}

/* Label under the gauge */
.pplns-gauge-label {
    text-align: center;
    margin-top: 8px;
}

.pplns-gauge-label .pplns-value {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 24px;
    color: #ffffff;
    display: block;
}

.pplns-gauge-label .pplns-title {
    font-size: 11px;
    color: #8899a6;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Status indicator */
.pplns-status {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    margin-top: 4px;
    font-size: 10px;
}

.pplns-status-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #666;
}

.pplns-status-dot.active {
    background: #3fb950;
    box-shadow: 0 0 6px #3fb950;
    animation: pplns-pulse 1.5s infinite;
}

.pplns-status-dot.inactive {
    background: #f85149;
}

@keyframes pplns-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

.pplns-status-text {
    color: #8899a6;
}

/* Color gradients for fill levels */
.pplns-fill-empty { fill: #1a2332; }
.pplns-fill-low { fill: #f85149; }
.pplns-fill-medium { fill: #d29922; }
.pplns-fill-high { fill: #58a6ff; }
.pplns-fill-full { fill: #3fb950; }

/* Stat box variant for PPLNS */
.stat-box.pplns-stat-box {
    min-width: 120px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* ============================================
   FIN PPLNS CHARGE GAUGE
   ============================================ */

/* ============================================
   STYLES PPLNS: Distribution Hashrate par Mineur
   Adapté au style cohérent de 7pool.net
   ============================================ */

/* === Section PPLNS === */
.pplns-section {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    border-radius: 0;
    padding: 0px;
    margin-bottom: 20px;
}

.pplns-section .chart-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 15px;
    margin-bottom: 20px;
}

.pplns-section .chart-title-group {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.pplns-section .chart-title {
    color: #bababa;
    font-size: 24px;
    font-weight: 50;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: "Bebas Neue", sans-serif;
    cursor: pointer;
}

.pplns-section .chart-title:hover {
    color: #ffffff;
}

.pplns-section .chart-icon {
    font-size: 20px;
}

.pplns-section .chart-subtitle,
.pplns-chart-subtitle {
    color: #8899a6;
    font-size: 12px;
}

/* === Icône Collapse === */
.collapse-icon {
    margin-left: 10px;
    font-size: 12px;
    transition: transform 0.3s ease;
    color: #8899a6;
}

.collapse-icon.collapsed {
    transform: rotate(-90deg);
}

/* === Contrôles (Lissage + Mode + Période) === */
.pplns-controls {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* === Bouton Lissage ON/OFF === */
.pplns-smooth-btn {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    padding: 6px 12px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    border-radius: 3px;
    transition: all 0.2s ease;
    font-family: inherit;
    white-space: nowrap;
}

.pplns-smooth-btn:hover {
    border-color: var(--accent-green);
    color: var(--accent-green);
}

.pplns-smooth-btn.active {
    background: var(--accent-green);
    color: #ffffff;
    border-color: var(--accent-green);
}

/* === Boutons Mode % / MH/s === */
.pplns-mode-buttons {
    display: flex;
    gap: 0;
}

.pplns-mode-btn {
    background: var(--bg-secondary);
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    padding: 6px 14px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
    font-family: "Bebas Neue", monospace;
}

.pplns-mode-btn:first-child {
    border-radius: 3px 0 0 3px;
}

.pplns-mode-btn:last-child {
    border-radius: 0 3px 3px 0;
    border-left: none;
}

.pplns-mode-btn:hover {
    border-color: #1da1f2;
    color: #1da1f2;
}

.pplns-mode-btn.active {
    background: #1da1f2;
    color: #ffffff;
    border-color: #1da1f2;
}

/* === Boutons de période === */
.pplns-time-buttons {
    display: flex;
    gap: 5px;
}

.pplns-time-btn {
    background: #1a1f2e;
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    padding: 6px 14px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    border-radius: 3px;
    transition: all 0.2s ease;
    font-family: inherit;
}

.pplns-time-btn:hover {
    border-color: #1da1f2;
    color: #1da1f2;
}

.pplns-time-btn.active {
    background: #1da1f2;
    color: #ffffff;
    border-color: #1da1f2;
}

/* === Stats Row === */
.pplns-stats-row {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    margin-bottom: 0px;
}

.pplns-stat-box {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border-color);
    border-radius: 0;
    padding: 12px 20px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 120px;
    flex: 1;
}

.pplns-stat-label {
    color: #8899a6;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.pplns-stat-value {
    color: var(--text-primary);
    font-size: 20px;
    font-weight: 700;
    font-family: 'Bebas Neue', monospace;
}

/* Couleurs des stats - utilise les couleurs de la pool */
.pplns-stat-box:nth-child(1) .pplns-stat-value {
    color: #1da1f2;
}

.pplns-stat-box:nth-child(2) .pplns-stat-value {
    color: var(--accent-green);
}

.pplns-stat-box:nth-child(3) .pplns-stat-value {
    color: #fbbf24;
}

.pplns-stat-box:nth-child(4) .pplns-stat-value {
    color: var(--accent-red);
}

.pplns-stat-value .decimal {
    font-size: 14px;
    opacity: 0.7;
}

.pplns-stat-value .unit {
    font-size: 12px;
    opacity: 0.6;
    margin-left: 2px;
}

/* === Chart Container === */
.pplns-chart-container {
    background: rgba(0, 0, 0, 0.2);
    border-radius: 0;
    padding: 15px;
    height: 400px;
    position: relative;
}

#pplnsMinersChart {
    width: 100% !important;
    height: 100% !important;
}

/* === Info Box === */
.pplns-info-box {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--border-color);
    border-radius: 0;
    padding: 5px 20px;
    margin-top: 0px;
}

.pplns-info-icon {
    font-size: 24px;
    line-height: 1;
}

.pplns-info-content {
    flex: 1;
}

.pplns-info-content strong {
    color: var(--text-primary);
    font-size: 14px;
    display: block;
    margin-bottom: 5px;
}

.pplns-info-content p {
    color: #c9d1d9;
    font-size: 13px;
    margin: 0;
    line-height: 1.5;
}

.pplns-info-content p strong {
    color: #1da1f2;
    display: inline;
}

/* === Error State === */
.pplns-error {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: #8899a6;
    text-align: center;
    gap: 15px;
}

.pplns-error button {
    background: #1da1f2;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 3px;
    cursor: pointer;
    font-weight: 600;
}

.pplns-error button:hover {
    background: #1a8cd8;
}

/* === Loading State === */
.pplns-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: #8899a6;
}

.pplns-loading .spinner {
    width: 40px;
    height: 40px;
    border: 3px solid rgba(29, 161, 242, 0.2);
    border-top-color: #1da1f2;
    border-radius: 50%;
    animation: pplns-spin 1s linear infinite;
    margin-right: 15px;
}

@keyframes pplns-spin {
    to { transform: rotate(360deg); }
}

/* === Collapsible elements === */
.pplns-collapsible {
    overflow: hidden;
    transition: max-height 0.3s ease, opacity 0.3s ease;
}

.pplns-collapsible.collapsed {
    max-height: 0 !important;
    opacity: 0;
    padding: 0 !important;
    margin: 0 !important;
}

/* === Responsive === */
@media (max-width: 1100px) {
    .pplns-controls {
        flex-wrap: wrap;
    }
}

@media (max-width: 900px) {
    .pplns-controls {
        flex-direction: column;
        align-items: stretch;
        width: 100%;
    }
    
    .pplns-smooth-btn {
        width: 100%;
        text-align: center;
    }
    
    .pplns-mode-buttons,
    .pplns-time-buttons {
        justify-content: center;
    }
}

@media (max-width: 768px) {
    .pplns-section .chart-header {
        flex-direction: column;
        align-items: stretch;
    }
    
    .pplns-stats-row {
        flex-direction: column;
    }
    
    .pplns-stat-box {
        width: 100%;
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
    }
    
    .pplns-chart-container {
        height: 300px;
    }
    
    .pplns-info-box {
        flex-direction: column;
        text-align: center;
    }
}

/* ============================================
   FIN DE STYLES PPLNS
   ============================================ */

/* ============================================
   réductible/collapsible PPLNS Distribution - Miner Contribution
    ============================================ */

    .collapse-icon {
    margin-left: 10px;
    font-size: 12px;
    transition: transform 0.3s ease;
}
.collapse-icon.collapsed {
    transform: rotate(-90deg);
}
.pplns-collapsible {
    overflow: hidden;
    transition: max-height 0.3s ease, opacity 0.3s ease;
}
.pplns-collapsible.collapsed {
    max-height: 0 !important;
    opacity: 0;
    padding: 0 !important;
    margin: 0 !important;
}

/* ============================================
   FIN DE réductible/collapsible PPLNS Distribution - Miner Contribution
    ============================================ */

/* Layout Mining Address */
.miner-address-display {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 5px;
}

.miner-address-display .address-header {
    display: flex;
    align-items: center;
    gap: 15px;
    width: 100%;
}

/* Liens coin - gris clair, blanc au survol, pas de soulignement */
.coin-link {
    color: #8899a6;
    text-decoration: none;
    transition: color 0.2s ease;
}

.coin-link:hover {
    color: #ffffff;
    text-decoration: none;
    background: none !important;
}

.chart-value-little .coin-link,
.chart-value-little .coin-link:hover,
.chart-value-little .coin-link:visited {
    color: #8899a6;
    text-decoration: none !important;
    background: transparent !important;
}

.chart-value-little .coin-link:hover {
    color: #ffffff;
}

/* TAILLE DES TREFLES */
.clover-small {
    font-size: 0.8em;  /* Ajustez la valeur selon vos besoins (0.7em, 0.9em, etc.) */
}

/* DASHBOARD STRATUM URL */
.stratum-url {
    color: #17c18b; /* #0FAA78 */
    font-size: 15px;
    font-family: 'Consolas', monospace; /* 'Courier New', monospace; */
    font-weight: bold;
}