:root{--bg: #f8f9fb;--surface: #ffffff;--surface-hover: #f0f2f5;--border: #e2e5ea;--border-light: #eef0f3;--text: #1a1d23;--text-secondary: #5f6672;--text-muted: #8b919d;--accent: #2563eb;--accent-hover: #1d4ed8;--red: #dc2626;--red-bg: #fef2f2;--amber: #d97706;--amber-bg: #fffbeb;--green: #16a34a;--green-bg: #f0fdf4;--blue: #2563eb;--blue-bg: #eff6ff;--purple: #7c3aed;--purple-bg: #f5f3ff;--teal: #0d9488;--teal-bg: #f0fdfa;--shadow-sm: 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.06);--shadow-lg: 0 8px 24px rgba(0,0,0,.08);--radius: 8px;--radius-lg: 12px}[data-theme=dark]{--bg: #0f1117;--surface: #1a1d27;--surface-hover: #242733;--border: #2e3140;--border-light: #262938;--text: #e8eaed;--text-secondary: #9ba1ad;--text-muted: #6b7180;--shadow-sm: 0 1px 2px rgba(0,0,0,.2);--shadow-md: 0 4px 12px rgba(0,0,0,.3);--shadow-lg: 0 8px 24px rgba(0,0,0,.4);--red-bg: #1f1012;--amber-bg: #1a1508;--green-bg: #0a1a0f;--blue-bg: #0c1425;--purple-bg: #130f20;--teal-bg: #0a1715}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.app{display:flex;min-height:100vh}.sidebar{width:272px;background:var(--surface);border-right:1px solid var(--border);padding:20px;flex-shrink:0;overflow-y:auto;position:sticky;top:0;height:100vh;transition:width .3s ease,padding .3s ease,opacity .3s ease}.sidebar.collapsed{width:0;padding:0;overflow:hidden;opacity:0;border-right:none}.sidebar-toggle{position:fixed;left:0;top:50%;transform:translateY(-50%);z-index:60;background:var(--surface);border:1px solid var(--border);border-left:none;border-radius:0 6px 6px 0;padding:8px 4px;cursor:pointer;color:var(--text-muted);font-size:12px;transition:all .2s;box-shadow:var(--shadow-sm)}.sidebar-toggle:hover{color:var(--accent);background:var(--blue-bg)}.sidebar-pin{display:inline-flex;align-items:center;gap:4px;background:none;border:none;cursor:pointer;font-size:11px;color:var(--text-muted);padding:2px 6px;border-radius:4px;transition:all .15s}.sidebar-pin:hover{color:var(--accent);background:var(--blue-bg)}.sidebar-pin.pinned{color:var(--accent)}.main{flex:1;padding:28px 32px;overflow-x:auto;min-width:0}.header{margin-bottom:24px}.header h1{font-size:24px;font-weight:700;letter-spacing:-.02em;margin-bottom:4px}.header .subtitle{color:var(--text-muted);font-size:13px}.theme-toggle{position:absolute;top:20px;right:32px;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:6px 12px;cursor:pointer;font-size:13px;color:var(--text-secondary);display:flex;align-items:center;gap:6px;transition:all .2s}.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}.stats{display:flex;gap:14px;margin-bottom:24px;flex-wrap:wrap}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;min-width:130px;box-shadow:var(--shadow-sm)}.stat .value{font-size:26px;font-weight:700;letter-spacing:-.02em}.stat .label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-top:2px}.tabs{display:flex;gap:2px;margin-bottom:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:3px;width:fit-content}.tab{padding:7px 18px;border:none;background:transparent;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;color:var(--text-secondary);transition:all .15s}.tab:hover{color:var(--text);background:var(--surface-hover)}.tab.active{background:var(--accent);color:#fff}.search-box{margin-bottom:18px}.search-box input{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;background:var(--bg);color:var(--text);outline:none;transition:border-color .2s}.search-box input:focus{border-color:var(--accent)}.search-box input::placeholder{color:var(--text-muted)}.filter-section{margin-bottom:16px}.filter-section h3{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:8px}.filter-group label{display:flex;align-items:center;gap:7px;padding:4px 0;font-size:13px;cursor:pointer;color:var(--text-secondary);transition:color .15s}.filter-group label:hover{color:var(--text)}.filter-group input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px}.filter-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.legend{display:flex;gap:18px;align-items:center;margin-bottom:18px;font-size:12px;color:var(--text-secondary)}.legend-item{display:flex;align-items:center;gap:5px}.legend-swatch{width:16px;height:16px;border-radius:3px;border:1px solid var(--border)}.heatmap-wrapper{overflow-x:auto;margin-bottom:20px;border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm)}table.heatmap{border-collapse:collapse;width:100%;background:var(--surface)}table.heatmap th,table.heatmap td{padding:11px 16px;text-align:center;font-size:13px;border:1px solid var(--border-light)}.col-label{background:var(--surface);font-weight:600;white-space:nowrap;color:var(--text-secondary);font-size:12px;text-transform:uppercase;letter-spacing:.03em}.row-label{background:var(--surface);font-weight:600;text-align:left!important;white-space:nowrap;min-width:170px;color:var(--text)}.heat-cell{cursor:pointer;font-weight:700;font-size:15px;min-width:64px;transition:all .15s;position:relative}.heat-cell:hover,.heat-cell:focus{outline:2px solid var(--accent);outline-offset:-2px;z-index:1}.detail-overlay{position:fixed;top:0;right:0;bottom:0;width:440px;background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:100;transform:translate(100%);transition:transform .25s ease;overflow-y:auto;padding:24px}.detail-overlay.visible{transform:translate(0)}.detail-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;position:sticky;top:0;background:var(--surface);padding-bottom:12px;border-bottom:1px solid var(--border)}.detail-header h2{font-size:17px;font-weight:700}.close-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--surface-hover);border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:16px;color:var(--text-secondary);transition:all .15s}.close-btn:hover{background:var(--border);color:var(--text)}.item-card{background:var(--bg);border:1px solid var(--border-light);border-radius:var(--radius);padding:16px;margin-bottom:10px;transition:border-color .15s}.item-card:hover{border-color:var(--border)}.item-card h4{font-size:14px;font-weight:600;margin-bottom:8px;line-height:1.4}.item-card p{font-size:13px;color:var(--text-secondary);margin-bottom:4px}.item-meta{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.badge-red{background:var(--red-bg);color:var(--red)}.badge-amber{background:var(--amber-bg);color:var(--amber)}.badge-green{background:var(--green-bg);color:var(--green)}.badge-blue{background:var(--blue-bg);color:var(--blue)}.badge-purple{background:var(--purple-bg);color:var(--purple)}.badge-teal{background:var(--teal-bg);color:var(--teal)}.tag{display:inline-flex;padding:1px 6px;border-radius:3px;font-size:10px;font-weight:600;background:var(--surface-hover);color:var(--text-muted);margin-right:3px}.source-link{font-size:12px;color:var(--accent);text-decoration:none;display:inline-flex;align-items:center;gap:3px;margin-top:6px}.source-link:hover{text-decoration:underline}.exec-summary{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;margin-bottom:24px;box-shadow:var(--shadow-sm)}.exec-summary h2{font-size:16px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:8px}.exec-bluf{font-size:14px;color:var(--text);margin-bottom:16px;line-height:1.6;padding:12px 16px;background:var(--blue-bg);border-radius:var(--radius);border-left:3px solid var(--accent)}.exec-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.exec-section h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px}.exec-item{font-size:13px;color:var(--text-secondary);padding:6px 0;border-bottom:1px solid var(--border-light)}.exec-item:last-child{border-bottom:none}.exec-item strong{color:var(--text)}.trend-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-sm);display:grid;grid-template-rows:subgrid;grid-row:span 3;gap:6px}.trend-card h3{font-size:16px;font-weight:700;display:flex;align-items:flex-start;gap:8px;margin:0}.trend-type{font-size:11px;font-weight:600;padding:2px 8px;border-radius:4px}.trend-type-convergence{background:var(--green-bg);color:var(--green)}.trend-type-divergence{background:var(--red-bg);color:var(--red)}.trend-type-emerging{background:var(--purple-bg);color:var(--purple)}.trend-type-acceleration{background:var(--amber-bg);color:var(--amber)}.trend-type-interconnected{background:var(--blue-bg);color:var(--blue)}.trend-jurisdictions{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0}.trend-jur{background:var(--bg);border:1px solid var(--border);padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600;color:var(--text-secondary)}.trend-leader{font-size:12px;color:var(--text-muted);margin-top:6px;font-style:italic}.vt-container{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.vt-controls{display:flex;gap:6px;padding:10px 16px;border-bottom:1px solid var(--border);align-items:center}.vt-controls button{padding:4px 12px;border:1px solid var(--border);background:var(--surface);border-radius:4px;cursor:pointer;font-size:12px;color:var(--text-secondary)}.vt-controls button:hover{background:var(--surface-hover);color:var(--text)}.vt-controls span{font-size:12px;color:var(--text-muted);margin-left:8px}.vt-scroll{overflow-x:auto;overflow-y:visible;position:relative}.vt-canvas{min-height:300px;position:relative}.vt-axis{position:sticky;top:0;background:var(--surface);border-bottom:1px solid var(--border);z-index:2;display:flex}.vt-axis-label{text-align:center;font-size:11px;font-weight:600;color:var(--text-muted);padding:6px 0;border-right:1px solid var(--border-light);flex-shrink:0}.vt-lanes{position:relative;padding:8px 0}.vt-lane{display:flex;align-items:center;height:36px;position:relative}.vt-item{position:absolute;height:28px;border-radius:4px;display:flex;align-items:center;padding:0 8px;font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .15s;border:1px solid transparent}.vt-item:hover{opacity:.85;z-index:5;overflow:visible}.vt-tags{margin-left:6px;display:inline-flex;gap:3px;flex-shrink:0}.vt-tag{font-size:9px;font-weight:500;background:#ffffff4d;border-radius:3px;padding:0 4px;opacity:.8}.vt-tooltip{display:none;position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow-lg);z-index:200;max-width:320px;font-size:13px;pointer-events:none}.vt-tooltip.visible{display:block}#map-container{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm);min-height:500px;position:relative}#map-svg{width:100%;height:100%;display:block}#map-svg .country{fill:var(--border-light);stroke:var(--border);stroke-width:.5;transition:fill .2s}#map-svg .country:hover{stroke:var(--accent);stroke-width:1.5;cursor:pointer}#map-svg .country.active{stroke:var(--accent);stroke-width:1.5}.map-controls{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:4px;z-index:5}.map-controls button{width:32px;height:32px;border:1px solid var(--border);background:var(--surface);border-radius:6px;cursor:pointer;font-size:16px;font-weight:700;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);transition:all .15s}.map-controls button:hover{background:var(--surface-hover);color:var(--text)}.map-legend{display:flex;gap:16px;align-items:center;margin-top:12px;font-size:12px;color:var(--text-secondary)}.map-legend-bar{width:200px;height:12px;border-radius:6px;background:linear-gradient(to right,#bbf7d0,#fde68a,#fca5a5)}.export-btn{display:block;width:100%;padding:9px 16px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);cursor:pointer;font-size:13px;font-weight:500;margin-top:16px;transition:background .15s}.export-btn:hover{background:var(--accent-hover)}.empty-state{text-align:center;padding:48px 24px;color:var(--text-muted)}.empty-state p{font-size:14px}@media print{.sidebar,.theme-toggle,.tabs,.export-btn,.close-btn,.search-box,.vt-controls{display:none!important}.app{display:block}.main{padding:0}.detail-overlay{position:static;transform:none;width:100%;border:1px solid #ddd;box-shadow:none}}@media(max-width:768px){.sidebar{display:none}.main{padding:16px}.stats{gap:8px}.stat{min-width:100px;padding:10px 12px}.stat .value{font-size:20px}.exec-grid{grid-template-columns:1fr}}@keyframes tooltipFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes langSweep{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes exportProgress{0%{width:0%}15%{width:20%}50%{width:60%}80%{width:85%}to{width:95%}}@keyframes gentlePulse{0%,to{box-shadow:0 0 #8b5cf666}50%{box-shadow:0 0 0 6px #8b5cf600}}@keyframes dashboardFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes dashboardScalePop{0%{opacity:0;transform:scale(.8)}60%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes dashboardSimpleFade{0%{opacity:0}to{opacity:1}}@keyframes dashboardSlideUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes checkmarkDraw{0%{stroke-dashoffset:24}to{stroke-dashoffset:0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes scalePop{0%{transform:scale(0);opacity:0}60%{transform:scale(1.15);opacity:1}to{transform:scale(1);opacity:1}}@keyframes statCountUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.dashboard-enter .sidebar{animation:dashboardFadeIn .4s ease-out .05s both}.dashboard-enter .main>*:nth-child(1){animation:dashboardFadeIn .4s ease-out .05s both}.dashboard-enter .main>*:nth-child(2){animation:dashboardFadeIn .4s ease-out .1s both}.dashboard-enter .stats{animation:none!important}.dashboard-enter .stats .stat{opacity:0;animation:dashboardScalePop .4s cubic-bezier(.34,1.56,.64,1) both}.dashboard-enter .stats .stat:nth-child(1){animation-delay:0s}.dashboard-enter .stats .stat:nth-child(2){animation-delay:.08s}.dashboard-enter .stats .stat:nth-child(3){animation-delay:.16s}.dashboard-enter .stats .stat:nth-child(4){animation-delay:.24s}.dashboard-enter .main>*:nth-child(n+4){animation:dashboardSimpleFade .5s ease-out .3s both}.dashboard-enter .exec-summary{animation:dashboardSimpleFade .6s ease-out .3s both}.dashboard-enter .exec-bluf{opacity:0;animation:dashboardSimpleFade .5s ease-out .35s both}.dashboard-enter .reveal-item{opacity:0;animation:dashboardSlideUp .25s ease-out both}.dashboard-enter .reveal-header{opacity:0;animation:dashboardSimpleFade .3s ease-out both}.scan-banner{background:linear-gradient(90deg,var(--accent),var(--green),var(--accent));background-size:200% 100%;animation:shimmer 3s linear infinite;color:#fff;padding:10px 20px;border-radius:var(--radius);font-size:13px;font-weight:600;text-align:center;margin-bottom:20px;display:flex;align-items:center;justify-content:center;gap:10px}.scan-banner .dot{width:8px;height:8px;border-radius:50%;background:#fff;animation:pulse 1.5s ease-in-out infinite}.skeleton-block{background:linear-gradient(90deg,var(--border-light) 25%,var(--surface-hover) 50%,var(--border-light) 75%);background-size:200% 100%;animation:shimmer 2s linear infinite;border-radius:var(--radius)}.preliminary-item{animation:fadeSlideIn .4s ease-out;border-left:3px solid var(--accent)!important}
