@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;700&display=swap";html{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-width:320px;min-height:100vh}#root{min-height:100vh}:root,[data-theme=dark]{--bg-primary: var(--bg-color, #0d1421);--bg-secondary: var(--header-bg, #0d1421);--bg-panel: var(--card-bg, rgba(23, 25, 36, .85));--bg-panel-solid: var(--card-bg, #171924);--bg-card: var(--card-bg, #171924);--bg-table-row-hover: var(--hover-bg, rgba(34, 37, 49, .8));--border: var(--border-color, #222531);--border-hover: #323546;--accent: #3861fb;--accent-light: #5274ff;--accent-dim: #2b4cc7;--text-primary: var(--text-primary, #ffffff);--text-secondary: var(--text-secondary, #a1a7bb);--text-muted: rgba(255, 255, 255, .35);--positive: #16c784;--negative: #ea3943;--font-heading: "Inter", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace}[data-theme=light]{--bg-primary: var(--bg-color, #f8f9fa);--bg-secondary: var(--header-bg, #ffffff);--bg-panel: var(--card-bg, rgba(255, 255, 255, .88));--bg-panel-solid: var(--card-bg, #ffffff);--bg-card: var(--card-bg, #ffffff);--bg-table-row-hover: var(--hover-bg, #eff2f5);--border: var(--border-color, #eff2f5);--border-hover: #cfd6e4;--accent: #3861fb;--accent-light: #4c71fb;--accent-dim: #2c4dd1;--text-primary: var(--text-primary, #000000);--text-secondary: var(--text-secondary, #58667e);--text-muted: rgba(0, 0, 0, .4);--positive: #16c784;--negative: #ea3943}.map-section{border:1px solid var(--border-color, var(--border));border-radius:12px;box-shadow:none;border:1px solid var(--border-color);box-shadow:0 10px 28px var(--shadow-color, rgba(0, 0, 0, .1));margin-top:24px;overflow:hidden;background:var(--card-bg, var(--bg-panel-solid));font-family:var(--font-body)}.map-section-header{max-width:1400px;margin:0 auto;padding:20px 28px 12px}.map-section-title{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;color:var(--accent);margin-bottom:12px}.map-controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap;min-width:0}.company-filter{display:flex;align-items:center;gap:10px;min-width:0;width:100%}.company-filter .filter-title{font-size:.65rem;color:var(--text-primary);opacity:.78;text-transform:uppercase;letter-spacing:1.5px;margin-right:4px}.company-filter .filter-action-btn{flex:0 0 auto;border:1px solid var(--border-hover);border-radius:999px;background:var(--bg-panel-solid);color:var(--text-secondary);font-family:var(--font-body);font-size:.68rem;font-weight:600;padding:5px 10px;cursor:pointer;transition:border-color .2s ease,color .2s ease,background-color .2s ease}.company-filter .filter-action-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:#3861fb14}.company-filter .filter-action-btn:disabled{opacity:.45;cursor:not-allowed}.company-filter .filter-buttons{display:flex;gap:8px;flex:1 1 auto;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;padding:0 2px 8px;scrollbar-color:var(--border-hover) transparent;scrollbar-width:thin}.company-filter .filter-buttons::-webkit-scrollbar{height:6px}.company-filter .filter-buttons::-webkit-scrollbar-track{background:transparent}.company-filter .filter-buttons::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:999px}.company-filter .filter-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid;border-radius:20px;background:transparent;color:var(--text-primary);font-family:var(--font-mono);font-size:.72rem;cursor:pointer;transition:all .25s ease;flex:0 0 auto}.company-filter .filter-btn.active,[data-theme=light] .company-filter .filter-btn.active{color:var(--text-primary)}.company-filter .filter-btn:hover{transform:translateY(-1px)}.company-filter .filter-btn.inactive{opacity:.82}.company-filter .filter-btn.inactive:hover{opacity:.96}[data-theme=light] .company-filter .filter-btn.inactive{opacity:.92}.company-filter .filter-dot{width:8px;height:8px;border-radius:50%;transition:background-color .25s ease}.company-filter .filter-label{font-weight:700}.company-filter .filter-count{font-size:.6rem;color:var(--text-secondary)}.legend-panel{position:absolute;left:20px;top:20px;z-index:100;background:var(--bg-panel);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:12px;padding:16px 20px;min-width:240px;max-height:calc(100% - 40px);overflow-y:auto;pointer-events:auto;scrollbar-color:var(--border-hover) transparent;scrollbar-width:thin}.legend-panel::-webkit-scrollbar{width:6px}.legend-panel::-webkit-scrollbar-track{background:transparent}.legend-panel::-webkit-scrollbar-thumb{background:var(--border-hover);border-radius:999px}.legend-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0;margin-bottom:12px;border:0;background:transparent;color:inherit;text-align:left}.legend-title{font-family:var(--font-heading);font-size:.7rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:12px}.legend-chevron{display:none;flex:0 0 auto;color:var(--accent);transition:transform .2s ease}.legend-content{display:block}.legend-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:.78rem}.legend-color{width:10px;height:10px;border-radius:50%;flex-shrink:0}.legend-label{flex:1;color:var(--text-secondary)}.legend-value{font-family:var(--font-mono);font-size:.72rem;color:var(--text-primary)}.legend-divider{height:1px;background:var(--border);margin:8px 0}.legend-total .legend-label{color:var(--text-secondary);font-size:.7rem}.legend-total .legend-value{color:var(--accent-dim);font-size:.7rem}.info-panel{position:absolute;right:20px;top:50%;transform:translateY(-50%);z-index:100;width:320px;background:var(--bg-panel);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:12px;overflow:hidden;animation:slideIn .3s ease;pointer-events:auto}@keyframes slideIn{0%{opacity:0;transform:translateY(-50%) translate(30px)}to{opacity:1;transform:translateY(-50%) translate(0)}}.info-header{padding:20px;border-bottom:1px solid var(--border);border-left:3px solid;position:relative}.info-close{position:absolute;top:12px;right:12px;background:none;border:none;color:var(--text-secondary);font-size:1.4rem;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.info-close:hover{background:#ffffff1a;color:var(--text-primary)}.info-flag{font-size:2rem;margin-bottom:6px}.info-mine-name{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;margin-bottom:4px}.info-company{font-size:.78rem;font-weight:500}.info-body{padding:16px 20px}.info-detail-row{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:5px 0;font-size:.78rem}.info-label{color:var(--text-secondary)}.info-value{color:var(--text-primary);font-weight:500;overflow-wrap:anywhere;text-align:right}.info-value.status-operating{color:#4cb963}.info-value.status-development{color:var(--accent)}.info-value.status-care-\&-maintenance{color:#e67e22}.info-divider{height:1px;background:var(--border);margin:12px 0}.info-stat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:16px}.info-stat{text-align:center}.info-stat-value{font-family:var(--font-mono);font-size:1rem;font-weight:700;color:var(--text-primary);overflow-wrap:anywhere}.info-stat-label{font-size:.6rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.info-bar-container{margin-top:12px}.info-bar-label{display:flex;justify-content:space-between;font-size:.65rem;color:var(--text-secondary);margin-bottom:4px}.info-bar-bg{height:4px;background:#ffffff14;border-radius:2px;overflow:hidden}.info-bar-fill{height:100%;border-radius:2px;transition:width .5s ease}.info-coordinates{margin-top:12px;font-family:var(--font-mono);font-size:.65rem;color:var(--text-secondary);text-align:center}.mini-chart{margin-top:4px}.mini-chart-title{font-size:.65rem;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.mini-chart svg{display:block;width:100%;height:auto}.mini-chart-legend{display:flex;gap:14px;margin-top:6px;font-size:.6rem;color:var(--text-secondary)}.mini-chart-legend-actual,.mini-chart-legend-proj{display:flex;align-items:center;gap:5px}.mini-chart-line-solid{display:inline-block;width:14px;height:2px;border-radius:1px}.mini-chart-line-dashed{display:inline-block;width:14px;height:0;border-top:2px dashed}.tooltip{position:fixed;z-index:200;pointer-events:none;background:var(--bg-panel-solid);border:1px solid var(--border);border-radius:10px;padding:10px 14px;min-width:160px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tooltip-header{display:flex;align-items:center;gap:6px;margin-bottom:4px}.tooltip-flag{font-size:1.1rem}.tooltip-mine{font-family:var(--font-heading);font-size:.82rem;font-weight:600}.tooltip-company{font-size:.7rem;font-weight:500;margin-bottom:4px}.tooltip-stat{font-family:var(--font-mono);font-size:.72rem;color:var(--accent-light)}.tooltip-country{font-size:.65rem;color:var(--text-secondary);margin-top:2px}.controls-hint{position:absolute;right:20px;bottom:20px;z-index:100;display:flex;gap:14px;pointer-events:none}.controls-hint p{font-size:.65rem;color:var(--text-secondary);display:flex;align-items:center;gap:5px}.controls-hint .click-node-hint{padding-right:42px}.controls-hint .key{display:inline-block;padding:2px 6px;background:#d4a5201f;border:1px solid rgba(212,165,32,.2);border-radius:4px;font-family:var(--font-mono);font-size:.6rem;color:var(--accent)}.data-source-badge{position:absolute;bottom:20px;left:50%;transform:translate(-50%);z-index:100;font-family:var(--font-mono);font-size:.6rem;color:var(--text-secondary);background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:4px 12px;pointer-events:none}.map-wrapper{position:relative;height:600px;border-top:1px solid var(--border-color, var(--border));border-radius:0;box-shadow:none;margin-top:0;overflow:hidden}.map-wrapper .globe-container{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.map-wrapper .globe-container .leaflet-container{width:100%;height:100%;background:var(--bg-primary)}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.loading-content{text-align:center}.loading-globe{width:60px;height:60px;border-radius:50%;border:3px solid rgba(212,165,32,.15);border-top-color:var(--accent);animation:spin 1s linear infinite;margin:0 auto 16px}.loading-text{font-family:var(--font-heading);font-size:.9rem;color:var(--accent);letter-spacing:2px;text-transform:uppercase}.error-screen{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.error-content{text-align:center;max-width:420px;padding:40px}.error-content h2{font-family:var(--font-heading);color:#e74c3c;margin-bottom:12px}.error-content p{color:var(--text-secondary);font-size:.9rem;margin-bottom:8px}.error-detail{font-family:var(--font-mono);font-size:.75rem;color:#e74c3c;background:#e74c3c1a;padding:8px 12px;border-radius:6px;margin:12px 0}.error-content code{display:block;font-family:var(--font-mono);font-size:.8rem;color:var(--accent);background:#d4a5201a;padding:10px 16px;border-radius:8px;margin-top:16px}@media (max-width: 768px){.map-section-header{padding:12px 16px 8px}.map-controls{flex-direction:row;align-items:center;overflow:hidden}.company-selection-filter{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:8px}.company-selection-filter .filter-title{margin-right:0;white-space:nowrap}.company-selection-filter .filter-action-btn{padding:5px 8px;white-space:nowrap}.company-filter .filter-buttons{flex-wrap:nowrap;width:auto;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;padding-bottom:8px}.company-filter .filter-btn{min-width:max-content}.map-wrapper{height:400px}.legend-panel{left:10px;top:10px;right:10px;min-width:180px;max-height:none;padding:0;overflow:visible}.legend-toggle{padding:10px 12px;margin-bottom:0;cursor:pointer}.legend-title{margin-bottom:0}.legend-chevron{display:block}.legend-panel.open .legend-chevron{transform:rotate(180deg)}.legend-content{display:none;max-height:260px;overflow-y:auto;padding:0 12px 12px;scrollbar-color:var(--border-hover) transparent;scrollbar-width:thin}.legend-panel.open .legend-content{display:block}.info-panel{right:10px;width:280px}.controls-hint{display:none}}:root,[data-theme=dark]{--bg-color: #0b0e11;--card-bg: #15171a;--header-bg: #0b0e11;--hover-bg: #1c1f24;--text-primary: #ffffff;--text-secondary: #a1a7bb;--border-color: #1e2128;--accent-color: #3861fb;--accent-dark: #1e3ebd;--logo-bg: #1c1f24;--input-bg: #15171a;--shadow-color: rgba(0, 0, 0, .3);--positive: #16c784;--negative: #ea3943}[data-theme=light]{--bg-color: #f5f7fa;--card-bg: #ffffff;--header-bg: #ffffff;--hover-bg: #f0f2f5;--text-primary: #0f1111;--text-secondary: #58667e;--border-color: #e3e6eb;--accent-color: #3861fb;--accent-dark: #1e3ebd;--logo-bg: #f0f2f5;--input-bg: #ffffff;--shadow-color: rgba(0, 0, 0, .05);--positive: #16c784;--negative: #ea3943}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--bg-color);color:var(--text-primary);line-height:1.5;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{max-width:1400px;margin:0 auto;padding:0 24px 48px;width:100%;flex:1}@media (max-width: 768px){.main-content{padding:0 12px 32px}}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 20px;gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--accent-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading p{color:var(--text-secondary);font-size:14px}.error-message{background:#ea39431a;border:1px solid rgba(234,57,67,.2);border-radius:8px;padding:16px;text-align:center;margin-bottom:24px}.error-message p{color:var(--negative)}.error-message .retry-countdown{margin-top:6px;color:var(--text-secondary);font-size:14px}.error-message button{margin-top:14px;min-height:36px;padding:0 16px;border:1px solid rgba(56,97,251,.55);border-radius:8px;background:#3861fb24;color:var(--text-primary);font:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:background-color .18s ease,border-color .18s ease,transform .18s ease}.error-message button:hover{background:var(--accent-color);border-color:var(--accent-color);transform:translateY(-1px)}.error-message button:active{transform:translateY(0)}.error-message button:focus-visible{outline:2px solid rgba(56,97,251,.45);outline-offset:3px}.footer{margin-top:24px}.footer p{color:var(--text-secondary);font-size:13px;text-align:center}.footer-links{margin-top:8px;display:flex;justify-content:center;align-items:center;gap:10px}.footer-links a{color:var(--text-secondary);text-decoration:none;font-weight:500;transition:color .18s ease}.footer-links a:hover{color:var(--accent-color);text-decoration:underline}.footer-sep{color:var(--border-color)}
