:root{--bg: #f6f7f9;--panel: #ffffff;--surface: #ffffff;--surface-2: #f8fafc;--surface-hover: #eef2f6;--ink: #111827;--ink-soft: #6b7280;--line: #e5e7eb;--accent: #2a788e;--accent-ink: #ffffff;--active-bg: #eff6ff;--active-line: #bfdbfe;--danger: #b91c1c;--track: #eceff3;--ocean: #eef2f6;--nodata-fill: #e2e5ea;--nodata-stroke: #c7ccd4;--nodata-hover: #d5d9e0;--country-stroke: #ffffff;--country-stroke-hover: #111827;--label-outline: rgba(17, 24, 39, .45);--outline: rgba(17, 24, 39, .15);--scrim: rgba(17, 24, 39, .45);--radius: 10px;--shadow: 0 8px 24px rgba(17, 24, 39, .12);--shadow-sm: 0 1px 3px rgba(17, 24, 39, .08);color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0f1115;--panel: #171a21;--surface: #171a21;--surface-2: #1d212a;--surface-hover: #232833;--ink: #e8eaed;--ink-soft: #9aa2ae;--line: #2b3039;--accent: #4aa3bd;--accent-ink: #0b0d11;--active-bg: #1b2a33;--active-line: #2f5c6e;--danger: #f27171;--track: #262b35;--ocean: #10141a;--nodata-fill: #262b34;--nodata-stroke: #333a45;--nodata-hover: #313846;--country-stroke: #10141a;--country-stroke-hover: #f4f6f8;--label-outline: rgba(0, 0, 0, .55);--outline: rgba(232, 234, 237, .18);--scrim: rgba(0, 0, 0, .62);--shadow: 0 10px 28px rgba(0, 0, 0, .55);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);color-scheme:dark}}:root[data-theme=dark]{--bg: #0f1115;--panel: #171a21;--surface: #171a21;--surface-2: #1d212a;--surface-hover: #232833;--ink: #e8eaed;--ink-soft: #9aa2ae;--line: #2b3039;--accent: #4aa3bd;--accent-ink: #0b0d11;--active-bg: #1b2a33;--active-line: #2f5c6e;--danger: #f27171;--track: #262b35;--ocean: #10141a;--nodata-fill: #262b34;--nodata-stroke: #333a45;--nodata-hover: #313846;--country-stroke: #10141a;--country-stroke-hover: #f4f6f8;--label-outline: rgba(0, 0, 0, .55);--outline: rgba(232, 234, 237, .18);--scrim: rgba(0, 0, 0, .62);--shadow: 0 10px 28px rgba(0, 0, 0, .55);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .4);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.app{max-width:1440px;margin:0 auto;padding:20px 20px 40px;display:flex;flex-direction:column;gap:16px}.app-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px}.app-head h1{margin:0 0 4px;font-size:22px;letter-spacing:-.01em}.app-sub{margin:0;max-width:62ch;color:var(--ink-soft);font-size:13px}.legend{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.legend-title{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin-bottom:8px}.legend-bands{display:flex;gap:12px;flex-wrap:wrap}.legend-band{display:flex;align-items:center;gap:6px}.legend-swatch{width:16px;height:12px;border-radius:3px;border:1px solid var(--outline)}.legend-label{font-size:12px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.controls{display:grid;grid-template-columns:minmax(260px,1.2fr) minmax(200px,1fr) minmax(280px,1.4fr);gap:14px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.control-group label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);margin-bottom:6px}.control-group select,.control-group input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}.control-group select:focus-visible,.control-group input:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.control-hint{margin:6px 0 0;font-size:12px;color:var(--ink-soft)}.region-chips{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:999px;padding:5px 11px;font:inherit;font-size:12px;cursor:pointer}.chip:hover{border-color:var(--accent);color:var(--ink)}.chip.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.chip-reset{color:var(--danger);border-style:dashed}.app-main{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}@media (max-width: 1080px){.app-main{grid-template-columns:minmax(0,1fr)}.controls{grid-template-columns:1fr}}.map-wrapper{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.map-wrapper svg{display:block;background:var(--ocean)}.map-controls{position:absolute;top:10px;right:10px;z-index:2;display:flex;flex-direction:column;gap:4px}.map-controls button{width:30px;height:30px;border:1px solid var(--line);background:var(--surface);border-radius:7px;font-size:15px;line-height:1;cursor:pointer;color:var(--ink);box-shadow:var(--shadow-sm)}.map-controls button:hover{border-color:var(--accent);color:var(--accent)}.map-labels text{paint-order:stroke;-webkit-user-select:none;user-select:none}.hovercard{position:fixed;z-index:50;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px;pointer-events:none}.hovercard-head{display:flex;align-items:center;gap:9px;padding-bottom:8px;margin-bottom:6px;border-bottom:1px solid var(--line)}.hovercard-name{font-weight:700;font-size:14px}.hovercard-sub{font-size:11px;color:var(--ink-soft)}.flag{border-radius:3px;border:1px solid var(--outline);display:block}.flag-sm{width:20px;height:auto}.flag-lg{width:52px;height:auto}.hovercard-table{width:100%;border-collapse:collapse;font-size:12px}.hovercard-table td{padding:2px 0;vertical-align:middle}.hovercard-table .row-active{background:var(--active-bg);font-weight:700}.cell-name{white-space:nowrap;padding-right:6px!important;color:var(--ink)}.cell-bar{width:62px}.minibar{display:block;height:7px;border-radius:3px;min-width:2px}.cell-score{text-align:right;width:34px;font-variant-numeric:tabular-nums}.cell-rank{text-align:right;width:32px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.hovercard-foot{margin-top:7px;padding-top:6px;border-top:1px solid var(--line);font-size:11px;color:var(--ink-soft);text-align:center}.ranking{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;max-height:620px}.ranking-head{display:flex;align-items:baseline;justify-content:space-between;padding:11px 13px;border-bottom:1px solid var(--line)}.ranking-head h2{margin:0;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.ranking-count{font-size:12px;color:var(--ink-soft)}.ranking-list{margin:0;padding:4px;list-style:none;overflow-y:auto}.ranking-item{width:100%;display:grid;grid-template-columns:26px 20px 1fr auto;align-items:center;gap:8px;padding:5px 7px;border:0;border-radius:7px;background:transparent;font:inherit;text-align:left;cursor:pointer}.ranking-item:hover,.ranking-item.hovered{background:var(--surface-hover)}.ranking-rank{font-size:11px;color:var(--ink-soft);font-variant-numeric:tabular-nums;text-align:right}.ranking-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranking-score{font-size:11px;font-weight:700;padding:2px 6px;border-radius:5px;font-variant-numeric:tabular-nums}.ranking-empty{padding:14px;color:var(--ink-soft);font-size:13px;text-align:center}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}.modal{background:var(--panel);border-radius:14px;box-shadow:var(--shadow);width:min(980px,100%);max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.modal-head{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:14px;padding:16px 18px;border-bottom:1px solid var(--line)}.modal-titles h2{margin:0;font-size:20px}.modal-sub{font-size:12px;color:var(--ink-soft);margin-top:2px}.modal-overall{display:flex;flex-direction:column;align-items:center;padding:7px 14px;border-radius:10px;min-width:92px}.modal-overall-score{font-size:21px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}.modal-overall-rank{font-size:11px;opacity:.9}.modal-close{width:32px;height:32px;border:1px solid var(--line);background:var(--surface);border-radius:8px;font-size:20px;line-height:1;cursor:pointer;color:var(--ink-soft)}.modal-close:hover{border-color:var(--danger);color:var(--danger)}.modal-body{padding:16px 18px;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}@media (max-width: 860px){.modal-body{grid-template-columns:1fr}}.modal-facts{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;padding:12px;background:var(--surface-2);border-radius:9px;border:1px solid var(--line)}.fact{display:flex;flex-direction:column;gap:1px}.fact-label{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.fact-value{font-size:13px;font-weight:600}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.modal-scores h3,.modal-text h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.sort-toggle{display:flex;gap:4px}.sort-toggle button{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:3px 8px;font:inherit;font-size:11px;color:var(--ink-soft);cursor:pointer}.sort-toggle button.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.score-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.score-row{padding:7px 9px;border-radius:8px;border:1px solid transparent}.score-row.active{background:var(--active-bg);border-color:var(--active-line)}.score-row-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.score-name{font-size:13px;font-weight:600}.score-name-en{display:block;font-size:10px;font-weight:400;color:var(--ink-soft)}.score-values{display:flex;align-items:baseline;gap:7px;font-variant-numeric:tabular-nums}.score-values b{font-size:14px}.score-rank{font-size:11px;color:var(--ink-soft)}.score-track{height:7px;background:var(--track);border-radius:4px;overflow:hidden;margin-top:5px}.score-fill{height:100%;border-radius:4px}.score-hint{margin:5px 0 0;font-size:11px;color:var(--ink-soft);line-height:1.4}.modal-text p{margin:0 0 10px;font-size:13.5px;line-height:1.62}.modal-text h3{margin-bottom:10px}.modal-disclaimer{font-size:11px!important;color:var(--ink-soft);border-top:1px solid var(--line);padding-top:9px}.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 18px;border-top:1px solid var(--line);background:var(--surface-2)}.modal-foot button{border:1px solid var(--line);background:var(--surface);border-radius:7px;padding:6px 12px;font:inherit;font-size:12px;cursor:pointer;color:var(--ink)}.modal-foot button:hover{border-color:var(--accent);color:var(--accent)}.modal-foot-hint{font-size:11px;color:var(--ink-soft)}.app-foot{font-size:11.5px;color:var(--ink-soft);text-align:center;padding-top:4px}.theme-toggle{display:inline-flex;gap:2px;padding:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px}.theme-btn{min-width:30px;height:26px;border:0;border-radius:7px;background:transparent;color:var(--ink-soft);font:inherit;font-size:14px;line-height:1;cursor:pointer}.theme-btn:hover{color:var(--ink);background:var(--surface-hover)}.theme-btn.active{background:var(--accent);color:var(--accent-ink)}.head-tools{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}.app-foot a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}.app-foot a:hover{color:var(--ink)}.source-line{margin:4px 0 0}.modal-source{margin-top:6px;font-size:11px;color:var(--ink-soft)}.modal-source a{color:var(--accent)}.lang-toggle{display:inline-flex;gap:2px;padding:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:9px}.lang-btn{min-width:34px;height:26px;border:0;border-radius:7px;background:transparent;color:var(--ink-soft);font:inherit;font-size:11px;font-weight:700;letter-spacing:.03em;cursor:pointer}.lang-btn:hover{color:var(--ink);background:var(--surface-hover)}.lang-btn.active{background:var(--accent);color:var(--accent-ink)}
