:root{--primary: 217 91% 60%;--primary-hover: 217 91% 45%;--primary-light: 217 91% 95%;--primary-dark: 217 91% 35%;--primary-foreground: 210 40% 98%;--secondary: 142 71% 45%;--secondary-hover: 142 71% 30%;--secondary-light: 142 71% 92%;--secondary-foreground: 210 40% 98%;--tertiary: 258 90% 66%;--tertiary-hover: 258 90% 51%;--tertiary-light: 258 90% 91%;--success: 142 71% 45%;--destructive: 0 84% 60%;--warning: 38 92% 50%;--gray-50: 210 20% 98%;--gray-100: 210 20% 96%;--gray-200: 214 32% 91%;--gray-300: 213 27% 83%;--gray-400: 215 20% 66%;--gray-500: 220 14% 55%;--gray-600: 215 16% 47%;--gray-700: 217 19% 36%;--gray-800: 215 28% 25%;--gray-900: 222 47% 13%;--background: 0 0% 100%;--background-secondary: 210 20% 98%;--card: 0 0% 100%;--card-foreground: 222 47% 13%;--border: 214 32% 91%;--input: 213 27% 83%;--ring: 217 91% 60%;--radius: .5rem}*{box-sizing:border-box}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;min-height:100vh;color:hsl(var(--gray-900))}.app-container{min-height:100vh;position:relative;background:linear-gradient(to bottom right,hsl(var(--primary-light)),#fff 50%,#fff 75%,#eee7fe4d)}.app-header{background:#fff;box-shadow:0 1px 3px #0000001a;border-bottom:1px solid hsl(var(--border));position:relative;z-index:100}.header-content{max-width:1400px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:16px}.header-logo{width:60px;height:60px;flex-shrink:0}.header-title{margin:0;font-size:1.5rem;font-weight:700;color:hsl(var(--gray-900));letter-spacing:-.025em}.background-pattern{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:0}.bg-glow{position:absolute;border-radius:50%;mix-blend-mode:multiply;filter:blur(80px);opacity:.08;animation:bgGlowPulse 8s ease-in-out infinite}.bg-glow-1{top:80px;left:-100px;width:320px;height:320px;background-color:hsl(var(--primary))}.bg-glow-2{top:80px;right:-100px;width:320px;height:320px;background-color:hsl(var(--primary));animation-delay:3s}.bg-glow-3{bottom:-100px;left:80px;width:288px;height:288px;background-color:hsl(var(--tertiary));animation-delay:6s}@keyframes bgGlowPulse{0%,to{opacity:.08;transform:scale(1)}50%{opacity:.12;transform:scale(1.03)}}.main-content{position:relative;z-index:1;padding:24px}.app{max-width:1200px;margin:0 auto}.app h1{margin:0 0 8px;font-size:1.75rem;font-weight:700;letter-spacing:-.025em;color:hsl(var(--gray-900))}.app .description{color:hsl(var(--gray-600));margin-bottom:24px;font-size:.95rem}.network-graph{background:hsl(var(--card));border-radius:12px;box-shadow:0 1px 3px #0000000d,0 4px 20px #0000000f;border:1px solid hsl(var(--border));padding:24px}.network-graph .header{margin-bottom:20px}.network-graph .header h2{display:flex;align-items:center;margin:0 0 8px;font-size:1.375rem;font-weight:700;letter-spacing:-.025em;color:hsl(var(--gray-900))}.network-graph .header h2:before{content:"";display:inline-block;width:4px;height:24px;background:linear-gradient(180deg,hsl(var(--primary)),hsl(var(--primary-dark)));border-radius:2px;margin-right:12px}.network-graph .header .subtitle{margin:0;font-size:.875rem;color:hsl(var(--gray-600));padding-left:16px}.control-panel{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:14px 20px;background:#fff;border-radius:0 0 8px 8px;margin-bottom:16px;border:none;border-top:1px solid hsl(var(--border))}.control-group{display:flex;align-items:center;gap:8px}.control-group>label{font-size:.7rem;font-weight:600;color:hsl(var(--gray-500));text-transform:uppercase;letter-spacing:.5px}.control-group.playback{gap:12px}.control-group select{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding:8px 32px 8px 12px;font-size:.8rem;font-weight:500;color:hsl(var(--gray-700));background-color:hsl(var(--gray-50));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;border:1px solid hsl(var(--gray-200));border-radius:6px;cursor:pointer;transition:all .15s ease;min-width:120px}.control-group select:hover{border-color:hsl(var(--gray-300));background-color:#fff}.control-group select:focus{outline:none;border-color:hsl(var(--primary));box-shadow:0 0 0 3px hsl(var(--primary) / .1);background-color:#fff}.control-group.cascade-toggle,.control-group.informal-toggle{gap:0}.control-group .checkbox-label{display:flex;align-items:center;gap:10px;cursor:pointer;padding:6px 12px;border-radius:6px;transition:background-color .15s ease}.control-group .checkbox-label:hover{background-color:hsl(var(--gray-100))}.control-group .checkbox-label input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:36px;height:20px;background:hsl(var(--gray-300));border-radius:10px;position:relative;cursor:pointer;transition:all .2s ease}.control-group .checkbox-label input[type=checkbox]:before{content:"";position:absolute;width:16px;height:16px;border-radius:50%;background:#fff;top:2px;left:2px;transition:transform .2s ease;box-shadow:0 1px 3px #0003}.control-group .checkbox-label input[type=checkbox]:checked{background:hsl(var(--primary))}.control-group .checkbox-label input[type=checkbox]:checked:before{transform:translate(16px)}.control-group .checkbox-label input[type=checkbox]:focus{outline:none;box-shadow:0 0 0 3px hsl(var(--primary) / .2)}.control-group .checkbox-label span{font-size:.8rem;font-weight:500;color:hsl(var(--gray-600))}.btn{padding:10px 20px;border:none;border-radius:6px;cursor:pointer;font-size:.875rem;font-weight:600;transition:all .2s ease;text-transform:uppercase;letter-spacing:.5px}.btn:focus-visible{outline:none;box-shadow:0 0 0 2px hsl(var(--background)),0 0 0 4px hsl(var(--ring))}.btn:first-child{background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--primary-hover)));color:hsl(var(--primary-foreground));min-width:100px;box-shadow:0 2px 4px hsl(var(--primary) / .2)}.btn:first-child:hover{transform:translateY(-1px);box-shadow:0 4px 12px hsl(var(--primary) / .35)}.btn:first-child:active{transform:scale(.98)}.btn:first-child.playing{background:linear-gradient(135deg,hsl(var(--secondary)),hsl(var(--secondary-hover)));box-shadow:0 2px 4px hsl(var(--secondary) / .2)}.btn:first-child.playing:hover{box-shadow:0 4px 12px hsl(var(--secondary) / .35)}.btn:not(:first-child){background:hsl(var(--gray-100));color:hsl(var(--gray-700));border:1px solid hsl(var(--border))}.btn:not(:first-child):hover{background:hsl(var(--gray-200));transform:translateY(-1px)}.degree-indicator{font-size:.875rem;color:hsl(var(--gray-700));font-weight:600;padding:0 16px;border-left:2px solid hsl(var(--border))}.control-group.speed input[type=range]{width:100px;accent-color:hsl(var(--primary));cursor:pointer}.control-group.speed span{font-weight:600;color:hsl(var(--primary));min-width:35px}.control-group select{padding:8px 14px;border:1px solid hsl(var(--gray-300));border-radius:6px;font-size:.875rem;background:hsl(var(--background));cursor:pointer;transition:all .2s;color:hsl(var(--gray-900))}.control-group select:hover{border-color:hsl(var(--primary))}.control-group select:focus{outline:none;border-color:hsl(var(--primary));box-shadow:0 0 0 3px hsl(var(--primary) / .1)}.control-group.cascade-toggle,.control-group.informal-toggle{border-left:2px solid hsl(var(--border));padding-left:16px}.checkbox-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.875rem;color:hsl(var(--gray-700));font-weight:500}.checkbox-label input[type=checkbox]{width:18px;height:18px;accent-color:hsl(var(--primary));cursor:pointer}.phase-indicator{display:flex;align-items:center;gap:16px;padding:14px 18px;background:hsl(var(--gray-50));border-radius:8px;margin-bottom:16px;border:1px solid hsl(var(--border))}.phase-label{font-weight:600;color:hsl(var(--gray-900));font-size:.9rem;min-width:80px}.phase-status{font-size:.85rem;color:hsl(var(--primary));font-weight:500}.phase-progress{flex:1;height:6px;background:hsl(var(--gray-200));border-radius:3px;overflow:hidden}.phase-progress-bar{height:100%;background:linear-gradient(90deg,hsl(var(--primary)),hsl(var(--primary-hover)));border-radius:3px;transition:width .1s ease-out}.phase-indicator-enhanced{padding:16px 20px;background:linear-gradient(to right,hsl(var(--gray-50)),#fff);border-radius:8px;margin-bottom:16px;border:1px solid hsl(var(--border))}.phase-header{display:flex;align-items:center;gap:16px;margin-bottom:14px}.playback-controls{display:flex;align-items:center;gap:6px}.playback-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:8px;cursor:pointer;transition:all .2s ease;background:hsl(var(--primary));color:#fff;box-shadow:0 2px 4px hsl(var(--primary) / .2)}.playback-btn:hover{background:hsl(var(--primary-hover));transform:translateY(-1px);box-shadow:0 4px 8px hsl(var(--primary) / .3)}.playback-btn:active{transform:translateY(0)}.playback-btn.playing{background:hsl(var(--secondary));box-shadow:0 2px 4px hsl(var(--secondary) / .2)}.playback-btn.playing:hover{background:hsl(var(--secondary-hover));box-shadow:0 4px 8px hsl(var(--secondary) / .3)}.playback-btn.reset{background:hsl(var(--gray-200));color:hsl(var(--gray-700));box-shadow:none}.playback-btn.reset:hover{background:hsl(var(--gray-300));box-shadow:0 2px 4px #0000001a}.phase-info{display:flex;align-items:center;gap:12px}.phase-current{font-weight:600;color:hsl(var(--gray-900));font-size:.95rem}.phase-indicator-enhanced .phase-status{font-size:.85rem;color:hsl(var(--gray-600));font-style:normal}.phase-track{position:relative;height:44px;cursor:pointer;-webkit-user-select:none;user-select:none;margin-top:4px}.phase-track.dragging{cursor:grabbing}.track-background{position:absolute;top:14px;left:0;right:0;height:6px;background:hsl(var(--gray-200));border-radius:3px}.track-progress{position:absolute;top:14px;left:0;height:6px;background:linear-gradient(90deg,hsl(var(--primary)),hsl(var(--primary-hover)));border-radius:3px;pointer-events:none}.degree-markers{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.degree-marker{position:absolute;top:0;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;pointer-events:auto;cursor:pointer;padding:0 2px}.degree-marker:hover .marker-tick{background:hsl(var(--primary))}.degree-marker:hover .marker-label{color:hsl(var(--gray-900));background:hsl(var(--gray-200))}.marker-tick{width:2px;height:10px;background:hsl(var(--gray-400));border-radius:1px;margin-bottom:2px;transition:all .15s ease}.degree-marker.active .marker-tick{background:hsl(var(--primary))}.degree-marker.current .marker-tick{background:hsl(var(--gray-900));width:3px}.marker-label{font-size:.7rem;color:hsl(var(--gray-600));font-weight:600;padding:2px 6px;border-radius:4px;background:transparent;transition:all .15s ease;white-space:nowrap}.degree-marker.active .marker-label{color:hsl(var(--primary-hover))}.degree-marker.current .marker-label{color:#fff;background:hsl(var(--primary-hover));font-weight:700}.scrubber-handle{position:absolute;top:17px;width:16px;height:16px;background:#fff;border:3px solid hsl(var(--primary-hover));border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 2px 8px #0003;pointer-events:none;z-index:10}.phase-track.dragging .scrubber-handle{transform:translate(-50%,-50%) scale(1.2);box-shadow:0 3px 12px hsl(var(--primary) / .4)}.phase-track:hover .scrubber-handle{box-shadow:0 3px 10px hsl(var(--primary) / .35)}.hover-tooltip{position:absolute;top:-28px;transform:translate(-50%);background:hsl(var(--gray-900));color:#fff;padding:5px 10px;border-radius:6px;font-size:.75rem;font-weight:500;white-space:nowrap;pointer-events:none;animation:tooltipFadeIn .1s ease-out}.hover-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:hsl(var(--gray-900))}.visualization-container{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;position:relative}.graph-canvas{width:100%;display:block;border-radius:8px;border:1px solid hsl(var(--border));overflow:hidden;background:hsl(var(--gray-50))}.graph-canvas-container{width:100%;position:relative}.legend{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;padding:14px 18px;background:hsl(var(--gray-50));border-radius:8px;border:1px solid hsl(var(--border))}.legend-section{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.legend h4{margin:0 8px 0 0;font-size:.75rem;color:hsl(var(--gray-600));font-weight:600;text-transform:uppercase;letter-spacing:.3px}.legend-item{display:flex;align-items:center;gap:8px}.legend-color{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.9);box-shadow:0 1px 3px #00000026}.legend-label{font-size:.8rem;color:hsl(var(--gray-700));font-weight:500}.legend-stats{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding-left:16px;border-left:1px solid hsl(var(--gray-300))}.legend-stats span{font-size:.75rem;color:hsl(var(--gray-600));font-weight:500}.legend-overlay{position:absolute;top:8px;left:8px;right:8px;z-index:100;animation:legendSlideDown .2s ease-out}.legend-overlay .legend{box-shadow:0 4px 20px #00000026;background:#fffffff7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@keyframes legendSlideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.stats{display:flex;flex-wrap:wrap;gap:24px;padding-top:16px;border-top:1px solid hsl(var(--border));font-size:.8rem;color:hsl(var(--gray-600))}.stats span{display:flex;gap:6px;align-items:center}.stats span:before{content:"";width:6px;height:6px;border-radius:50%;background:hsl(var(--gray-400))}.loading,.error,.no-data{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:500px;color:hsl(var(--gray-600));font-size:1rem;gap:16px}.error{color:hsl(var(--destructive))}.loading-spinner{display:flex;align-items:center;gap:12px}.loading-spinner:before{content:"";width:28px;height:28px;border:3px solid hsl(var(--gray-200));border-top-color:hsl(var(--primary));border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.node-group{cursor:pointer}.node-group .node-hover-target{transition:transform .15s ease-out}.node-group:hover .node-hover-target{transform:scale(1.12)}.node-tooltip{background:hsl(var(--gray-900));color:#fff;padding:14px 18px;border-radius:10px;border:1px solid hsl(var(--gray-800));box-shadow:0 10px 25px -5px #00000040,0 20px 50px -12px #00000026;z-index:1000;min-width:200px;text-align:left;animation:tooltipFadeIn .15s ease-out}.node-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:8px solid transparent;border-top-color:hsl(var(--gray-900))}@keyframes tooltipFadeIn{0%{opacity:0;transform:translate(-50%) translateY(5px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.tooltip-header{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid hsl(var(--gray-700))}.tooltip-country{font-weight:600;font-size:1rem;letter-spacing:.3px}.tooltip-degree{font-size:.85rem;color:hsl(var(--gray-400));margin-bottom:6px}.tooltip-risk{font-size:.75rem;padding:4px 10px;border-radius:6px;background:hsl(var(--primary) / .15);color:#85b2f9;display:inline-block;font-weight:500}.tooltip-section{margin-top:10px;padding-top:10px;border-top:1px solid hsl(var(--gray-700))}.tooltip-section-title{font-size:.7rem;color:hsl(var(--gray-500));text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;font-weight:600}.tooltip-section-content{font-size:.8rem;color:hsl(var(--gray-300));line-height:1.5}.tooltip-section-content.references-in{color:#7ce9a4}.tooltip-section-content.references-out{color:#85b2f9}.node-group.selected .node-hover-target{transform:scale(1.05)}.node-group.dimmed{opacity:.15;pointer-events:none}.edge-dimmed{opacity:.08}.ribbon-tabs{display:flex;margin:-24px -24px 24px;background:hsl(var(--gray-100));border-bottom:1px solid hsl(var(--border))}.ribbon-tab{flex:1;padding:16px 24px;border:none;background:hsl(var(--gray-100));cursor:pointer;font-size:1rem;font-weight:500;color:hsl(var(--gray-600));transition:all .2s ease;position:relative;text-align:center;border-bottom:3px solid transparent;margin-bottom:-1px}.ribbon-tab:first-child{border-right:1px solid hsl(var(--border))}.ribbon-tab:hover{color:hsl(var(--gray-900));background:hsl(var(--gray-200))}.ribbon-tab:focus-visible{outline:none;background:hsl(var(--gray-200))}.ribbon-tab.active{color:hsl(var(--primary));font-weight:600;background:#fff;border-bottom-color:hsl(var(--primary))}.timeline-indicator{padding:14px 18px;background:hsl(var(--gray-50));border-radius:8px;margin-bottom:16px;border:1px solid hsl(var(--border))}.timeline-info{display:flex;align-items:center;gap:12px;margin-bottom:12px}.timeline-current-date{font-weight:700;color:hsl(var(--gray-900));font-size:1.1rem}.timeline-status{font-size:.85rem;color:hsl(var(--gray-600))}.active-event-count{color:hsl(var(--primary));font-weight:600}.timeline-track{position:relative;height:60px;cursor:pointer;-webkit-user-select:none;user-select:none}.timeline-track.dragging{cursor:grabbing}.timeline-track-background{position:absolute;top:20px;left:0;right:0;height:8px;background:hsl(var(--gray-200));border-radius:4px}.timeline-density{position:absolute;top:4px;left:0;right:0;height:14px;pointer-events:none}.density-bar{position:absolute;bottom:0;width:3px;background:hsl(var(--gray-400));border-radius:1px;transform:translate(-50%);opacity:.5}.timeline-progress{position:absolute;top:20px;left:0;height:8px;background:linear-gradient(90deg,hsl(var(--primary)),hsl(var(--primary-hover)));border-radius:4px;pointer-events:none;transition:width .1s ease-out}.timeline-markers{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.year-marker{position:absolute;top:32px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;pointer-events:auto;cursor:pointer}.year-marker .marker-tick{width:2px;height:12px;background:hsl(var(--gray-400));margin-bottom:4px}.year-marker .marker-year{font-size:.7rem;color:hsl(var(--gray-600));font-weight:600}.year-marker.start .marker-tick,.year-marker.end .marker-tick{height:16px;background:hsl(var(--gray-600))}.timeline-handle{position:absolute;top:24px;width:18px;height:18px;background:#fff;border:3px solid hsl(var(--primary-hover));border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 2px 8px #0003;pointer-events:none;z-index:10;transition:left .1s ease-out}.timeline-track.dragging .timeline-handle{transform:translate(-50%,-50%) scale(1.2);box-shadow:0 3px 12px hsl(var(--primary) / .4)}.timeline-hover-tooltip{position:absolute;top:-28px;transform:translate(-50%);background:hsl(var(--gray-900));color:#fff;padding:5px 10px;border-radius:6px;font-size:.75rem;font-weight:500;white-space:nowrap;pointer-events:none}.temporal-canvas .pulse-ring{animation:pulseRing 1.5s ease-out infinite}.temporal-canvas .temporal-node .node-hover-target{transition:transform .15s ease-out}.temporal-canvas .temporal-node:hover .node-hover-target{transform:scale(1.1)}@keyframes pulseRing{0%{transform:scale(1);opacity:.6}to{transform:scale(1.4);opacity:0}}.temporal-date-overlay{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;pointer-events:none}.temporal-tooltip .tooltip-connections{margin-top:8px;padding-top:8px;border-top:1px solid hsl(var(--gray-700));font-size:.8rem;color:hsl(var(--gray-400))}.temporal-legend{position:absolute;bottom:16px;right:16px;background:#fffffff7;padding:14px 18px;border-radius:10px;border:1px solid hsl(var(--border));box-shadow:0 4px 16px #00000014}.temporal-legend .legend-title{font-size:.7rem;color:hsl(var(--gray-600));text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;font-weight:600}.temporal-legend .legend-items{display:flex;flex-direction:column;gap:8px}.temporal-legend .legend-item{display:flex;align-items:center;gap:10px;font-size:.8rem;color:hsl(var(--gray-700));font-weight:500}.temporal-legend .legend-color{width:14px;height:14px;border-radius:4px}.control-panel.temporal-controls{display:flex;flex-wrap:wrap;gap:20px;align-items:center;padding:16px 20px;background:linear-gradient(135deg,hsl(var(--gray-50)),hsl(var(--gray-100)));border-radius:8px;margin-bottom:12px;border:1px solid hsl(var(--border))}.temporal-controls .playback-controls{display:flex;gap:8px}.temporal-controls .control-button{width:44px;height:44px;border:none;border-radius:8px;cursor:pointer;font-size:1.2rem;transition:all .2s ease;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--primary-hover)));color:#fff;box-shadow:0 2px 4px hsl(var(--primary) / .2)}.temporal-controls .control-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px hsl(var(--primary) / .35)}.temporal-controls .control-button:focus-visible{outline:none;box-shadow:0 0 0 2px hsl(var(--background)),0 0 0 4px hsl(var(--ring))}.temporal-controls .control-button.playing{background:linear-gradient(135deg,hsl(var(--secondary)),hsl(var(--secondary-hover)));box-shadow:0 2px 4px hsl(var(--secondary) / .2)}.temporal-controls .control-button.playing:hover{box-shadow:0 4px 12px hsl(var(--secondary) / .35)}.temporal-controls .control-button:last-child{background:hsl(var(--gray-100));color:hsl(var(--gray-700));border:1px solid hsl(var(--border));box-shadow:none}.temporal-controls .control-button:last-child:hover{background:hsl(var(--gray-200))}.temporal-controls input[type=range]{width:100px;accent-color:hsl(var(--primary));cursor:pointer}.temporal-controls select{padding:8px 14px;border:1px solid hsl(var(--gray-300));border-radius:6px;font-size:.875rem;background:hsl(var(--background));cursor:pointer;color:hsl(var(--gray-900))}.temporal-controls select:hover{border-color:hsl(var(--primary))}.temporal-controls select:focus{outline:none;border-color:hsl(var(--primary));box-shadow:0 0 0 3px hsl(var(--primary) / .1)}.temporal-controls label{font-size:.75rem;font-weight:600;color:hsl(var(--gray-600));text-transform:uppercase;letter-spacing:.3px}.temporal-controls span{font-size:.875rem;color:hsl(var(--primary));font-weight:600;min-width:35px}.temporal-controls .irp-type-filters{display:flex;gap:12px;border-left:2px solid hsl(var(--border));padding-left:16px}.temporal-controls .irp-type-filters .checkbox-label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:.875rem;color:hsl(var(--gray-700));font-weight:500}.temporal-controls .irp-type-filters input[type=checkbox]{width:16px;height:16px;accent-color:hsl(var(--primary))}.temporal-controls .country-filter{display:flex;align-items:center;gap:10px;border-left:2px solid hsl(var(--border));padding-left:16px}.temporal-controls .clear-filter-btn{width:26px;height:26px;border:none;border-radius:50%;background:hsl(var(--secondary));color:#fff;cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;transition:all .2s}.temporal-controls .clear-filter-btn:hover{background:hsl(var(--secondary-hover));transform:scale(1.05)}.country-filter-panel{padding:16px 18px;background:hsl(var(--gray-50));border-radius:8px;margin-bottom:16px;border:1px solid hsl(var(--border))}.country-filter-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:.8rem;color:hsl(var(--gray-600));font-weight:500}.country-filter-header button{padding:6px 12px;border:none;border-radius:6px;background:hsl(var(--gray-200));color:hsl(var(--gray-700));cursor:pointer;font-size:.75rem;font-weight:500;transition:all .2s}.country-filter-header button:hover{background:hsl(var(--gray-300))}.country-filter-chips{display:flex;flex-wrap:wrap;gap:6px;max-height:140px;overflow-y:auto;padding:2px}.country-chip{padding:5px 12px;border:1px solid hsl(var(--border));border-radius:20px;background:hsl(var(--background));color:hsl(var(--gray-700));cursor:pointer;font-size:.75rem;font-weight:500;transition:all .15s ease}.country-chip:hover{border-color:hsl(var(--primary));background:hsl(var(--primary-light))}.country-chip.selected{background:hsl(var(--primary));border-color:hsl(var(--primary));color:#fff}.country-chip.formal{border-left:3px solid hsl(var(--secondary))}.country-chip.informal{border-left:3px solid hsl(var(--warning))}.country-chip.none{border-left:3px solid hsl(var(--gray-500))}.country-chip.enabled{background:hsl(var(--primary));border-color:hsl(var(--primary));color:#fff}.country-chip.excluded{background:hsl(var(--gray-100));color:hsl(var(--gray-400));opacity:.7}.country-chip.excluded:hover{opacity:1;background:hsl(var(--gray-200))}.country-chip.enabled.formal,.country-chip.enabled.informal,.country-chip.enabled.none{border-left-color:#fff9}.filter-actions{display:flex;gap:8px}.filter-status{font-size:.8rem;color:hsl(var(--gray-600));padding:4px 10px;background:hsl(var(--gray-100));border-radius:6px;font-weight:500}.region-toggles{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid hsl(var(--border))}.region-toggle{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid hsl(var(--border));border-radius:8px;background:hsl(var(--background));color:hsl(var(--gray-700));cursor:pointer;font-size:.8rem;font-weight:500;transition:all .15s ease}.region-toggle:hover{border-color:hsl(var(--primary));background:hsl(var(--primary-light))}.region-toggle.enabled{background:hsl(var(--primary));border-color:hsl(var(--primary));color:#fff;box-shadow:0 2px 4px hsl(var(--primary) / .2)}.region-toggle.partial{background:#fef5e7;border-color:hsl(var(--warning));color:#935f06}.region-status{font-size:.7rem;opacity:.85}@media (max-width: 900px){body{padding:16px}.control-panel{flex-direction:column;align-items:flex-start;gap:16px}.legend{justify-content:center}.phase-indicator{flex-wrap:wrap}.phase-progress{width:100%;order:3;margin-top:8px}.tab-selector{flex-direction:column}.tab-button{width:100%}}.network-graph.simple{padding:16px}.network-graph.simple .header{text-align:center;margin-bottom:12px}.network-graph.simple .header h2{font-size:1.1rem;margin-bottom:4px;justify-content:center}.network-graph.simple .header h2:before{display:none}.network-graph.simple .header .subtitle{font-size:.8rem;padding-left:0}.control-panel.simple{display:flex;justify-content:center;align-items:center;gap:24px;padding:12px 16px;background:linear-gradient(135deg,hsl(var(--gray-50)),hsl(var(--gray-100)));border-radius:8px;margin-bottom:10px;border:1px solid hsl(var(--border))}.control-panel.simple .control-group.playback{display:flex;gap:8px}.control-panel.simple .btn{display:flex;align-items:center;gap:6px;padding:8px 16px;font-size:.8rem;border-radius:6px}.control-panel.simple .btn .btn-icon{display:flex;align-items:center;justify-content:center}.control-panel.simple .btn .btn-icon svg{width:14px;height:14px}.control-panel.simple .play-btn{background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--primary-hover)));color:#fff}.control-panel.simple .play-btn:hover{background:linear-gradient(135deg,hsl(var(--primary-hover)),hsl(var(--primary-dark)));transform:translateY(-1px);box-shadow:0 4px 12px hsl(var(--primary) / .3)}.control-panel.simple .play-btn.playing{background:linear-gradient(135deg,hsl(var(--warning)),#ce8509)}.control-panel.simple .play-btn.playing:hover{background:linear-gradient(135deg,#ce8509,#ab6f07);box-shadow:0 4px 12px hsl(var(--warning) / .3)}.control-panel.simple .reset-btn{background:hsl(var(--gray-200));color:hsl(var(--gray-700))}.control-panel.simple .reset-btn:hover{background:hsl(var(--gray-300))}.control-panel.simple .degree-display{display:flex;align-items:center;gap:6px;font-size:.85rem;color:hsl(var(--gray-600));padding:6px 12px;background:#fff;border-radius:6px;border:1px solid hsl(var(--border))}.control-panel.simple .degree-label{font-weight:500}.control-panel.simple .degree-value{font-weight:600;color:hsl(var(--primary))}.control-panel.simple .degree-max{color:hsl(var(--gray-400))}.app.simple-embed{max-width:none;padding:0}.app.simple-embed .network-graph{border-radius:0;box-shadow:none;border:none;height:100%;display:flex;flex-direction:column}.app.simple-embed .visualization-container{flex:1;min-height:0}.app.simple-embed .stats{padding:8px 16px;font-size:.75rem}.network-graph.simple.minimal{padding:0}.network-graph.simple.minimal .header,.network-graph.simple.minimal .control-panel,.network-graph.simple.minimal .phase-indicator,.network-graph.simple.minimal .stats{display:none}.network-graph.simple.minimal .visualization-container{position:relative;border-radius:0}.play-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#f8fafce6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;z-index:100;transition:opacity .3s ease}.play-overlay:hover{background:#f8fafccc}.play-overlay-content{display:flex;flex-direction:column;align-items:center;gap:16px}.play-button{width:80px;height:80px;border-radius:50%;border:none;background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--primary-hover)));color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 32px hsl(var(--primary) / .35);transition:all .3s ease}.play-button:hover{transform:scale(1.08);box-shadow:0 12px 40px hsl(var(--primary) / .45)}.play-button:focus-visible{outline:none;box-shadow:0 0 0 3px #fff,0 0 0 6px hsl(var(--ring)),0 8px 32px hsl(var(--primary) / .35)}.play-button svg{width:32px;height:32px;margin-left:4px}.play-label{font-size:.95rem;font-weight:600;color:hsl(var(--gray-700));text-align:center}@media (max-width: 640px){.play-button{width:64px;height:64px}.play-button svg{width:26px;height:26px}.play-label{font-size:.85rem}}.unified-control-panel{background:#fff;border-radius:8px;overflow:visible;margin-bottom:16px;border:1px solid hsl(var(--border));box-shadow:0 2px 8px #0000000f}.unified-control-panel .timeline-row{display:flex;align-items:center;gap:16px;padding:12px 16px;background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--primary-hover)));border-radius:8px 8px 0 0;color:#fff}.unified-control-panel .controls-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px;padding:12px 16px;background:#fff;border-radius:0}.unified-control-panel .controls-row:last-child{border-radius:0 0 8px 8px}.unified-control-panel .controls-row-bottom{border-top:1px solid hsl(var(--gray-100));padding-top:10px;padding-bottom:14px;background:hsl(var(--gray-50))}.unified-control-panel .region-filter-row{padding:8px 16px;gap:6px;flex-wrap:wrap;border-top:1px solid hsl(var(--gray-100));background:hsl(var(--gray-50) / .5)}.unified-control-panel .region-label{font-size:.7rem;font-weight:600;color:hsl(var(--gray-500));text-transform:uppercase;letter-spacing:.5px;margin-right:4px}.unified-control-panel .region-btn{padding:4px 10px;font-size:.75rem;font-weight:500;color:hsl(var(--gray-500));background:hsl(var(--gray-100));border:1px solid hsl(var(--gray-200));border-radius:4px;cursor:pointer;transition:all .15s ease}.unified-control-panel .region-btn:hover{border-color:hsl(var(--gray-300));background:hsl(var(--gray-200))}.unified-control-panel .region-btn.enabled{color:#fff;background:hsl(var(--primary));border-color:hsl(var(--primary))}.unified-control-panel .region-btn.enabled:hover{background:hsl(var(--primary-hover));border-color:hsl(var(--primary-hover))}.unified-control-panel .region-btn.partial{color:hsl(var(--primary));background:hsl(var(--primary-light));border-color:hsl(var(--primary))}.unified-control-panel .control-item{display:flex;align-items:center;gap:8px}.unified-control-panel .control-item label{font-size:.7rem;font-weight:600;color:hsl(var(--gray-500));text-transform:uppercase;letter-spacing:.5px}.unified-control-panel .control-item select{appearance:none;-webkit-appearance:none;-moz-appearance:none;padding:6px 28px 6px 10px;font-size:.8rem;font-weight:500;color:hsl(var(--gray-700));background-color:hsl(var(--gray-50));background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;border:1px solid hsl(var(--gray-200));border-radius:6px;cursor:pointer;transition:all .15s ease}.unified-control-panel .control-item select:hover{border-color:hsl(var(--gray-300));background-color:#fff}.unified-control-panel .control-item select:focus{outline:none;border-color:hsl(var(--primary));box-shadow:0 0 0 2px hsl(var(--primary) / .1);background-color:#fff}.unified-control-panel .control-divider{width:1px;height:24px;background:hsl(var(--gray-200));margin:0 4px}.unified-control-panel .toggle-control{display:flex;align-items:center;gap:8px;cursor:pointer;padding:4px 8px;border-radius:6px;transition:background-color .15s ease}.unified-control-panel .toggle-control:hover{background-color:hsl(var(--gray-100))}.unified-control-panel .toggle-control input[type=checkbox]{display:none}.unified-control-panel .toggle-switch{width:32px;height:18px;background:hsl(var(--gray-300));border-radius:9px;position:relative;transition:all .2s ease}.unified-control-panel .toggle-switch:before{content:"";position:absolute;width:14px;height:14px;border-radius:50%;background:#fff;top:2px;left:2px;transition:transform .2s ease;box-shadow:0 1px 2px #0003}.unified-control-panel .toggle-control input:checked+.toggle-switch{background:hsl(var(--primary))}.unified-control-panel .toggle-control input:checked+.toggle-switch:before{transform:translate(14px)}.unified-control-panel .toggle-label{font-size:.75rem;font-weight:500;color:hsl(var(--gray-600))}.unified-control-panel .control-spacer{flex:1}.legend-expand-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border:1px solid hsl(var(--gray-200));border-radius:6px;background:#fff;color:hsl(var(--gray-600));cursor:pointer;font-size:.8rem;font-weight:500;transition:all .2s ease}.legend-expand-btn:hover{border-color:hsl(var(--gray-300));color:hsl(var(--gray-800));background:hsl(var(--gray-50))}.legend-expand-btn.expanded{background:hsl(var(--primary));border-color:hsl(var(--primary));color:#fff}.legend-expand-btn.expanded:hover{background:hsl(var(--primary-hover));border-color:hsl(var(--primary-hover))}.legend-expand-btn .chevron-icon{transition:transform .2s ease}.legend-expand-btn.expanded .chevron-icon{transform:rotate(180deg)}.unified-control-panel .layout-toggle{gap:6px}.layout-switch-group{display:flex;background:hsl(var(--gray-100));border-radius:8px;padding:3px;gap:2px;border:1px solid hsl(var(--gray-200))}.layout-switch-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border:none;border-radius:6px;background:transparent;color:hsl(var(--gray-500));cursor:pointer;font-size:.8rem;font-weight:500;transition:all .2s ease}.layout-switch-btn:hover{color:hsl(var(--gray-700));background:hsl(var(--gray-200))}.layout-switch-btn.active{background:#fff;color:hsl(var(--primary));box-shadow:0 1px 3px #0000001a}.layout-switch-btn svg{width:16px;height:16px;flex-shrink:0}.layout-switch-btn span{white-space:nowrap}.unified-control-panel .direction-toggle{gap:6px}.direction-switch-group{display:flex;background:hsl(var(--gray-100));border-radius:8px;padding:3px;gap:2px;border:1px solid hsl(var(--gray-200))}.direction-switch-btn{display:flex;align-items:center;gap:6px;padding:6px 12px;border:none;border-radius:6px;background:transparent;color:hsl(var(--gray-500));cursor:pointer;font-size:.8rem;font-weight:500;transition:all .2s ease;position:relative}.direction-switch-btn:hover{color:hsl(var(--gray-700));background:hsl(var(--gray-200))}.direction-switch-btn.active{background:#fff;color:hsl(var(--primary));box-shadow:0 1px 3px #0000001a}.direction-switch-btn svg{width:16px;height:16px;flex-shrink:0}.direction-switch-btn span{white-space:nowrap}.layout-switch-btn[title],.direction-switch-btn[title]{position:relative}.layout-switch-btn:after,.direction-switch-btn:after{content:attr(title);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);padding:8px 12px;background:hsl(var(--gray-900));color:#fff;font-size:.75rem;font-weight:400;border-radius:6px;white-space:normal;min-width:180px;max-width:280px;text-align:center;line-height:1.4;opacity:0;visibility:hidden;transition:all .15s ease;pointer-events:none;z-index:1000;box-shadow:0 4px 12px #00000026}.layout-switch-btn:before,.direction-switch-btn:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:hsl(var(--gray-900));opacity:0;visibility:hidden;transition:all .15s ease;pointer-events:none;z-index:1000}.layout-switch-btn:hover:after,.layout-switch-btn:hover:before,.direction-switch-btn:hover:after,.direction-switch-btn:hover:before{opacity:1;visibility:visible}.unified-control-panel .control-item[title]{position:relative}.unified-control-panel .control-item[title]:after{content:attr(title);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);padding:8px 12px;background:hsl(var(--gray-900));color:#fff;font-size:.75rem;font-weight:400;border-radius:6px;white-space:normal;min-width:200px;max-width:300px;text-align:center;line-height:1.4;opacity:0;visibility:hidden;transition:all .15s ease;pointer-events:none;z-index:1000;box-shadow:0 4px 12px #00000026}.unified-control-panel .control-item[title]:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:hsl(var(--gray-900));opacity:0;visibility:hidden;transition:all .15s ease;pointer-events:none;z-index:1000}.unified-control-panel .control-item[title]:hover:after,.unified-control-panel .control-item[title]:hover:before{opacity:1;visibility:visible}.unified-control-panel .toggle-control[title]{position:relative}.unified-control-panel .toggle-control[title]:after{content:attr(title);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);padding:8px 12px;background:hsl(var(--gray-900));color:#fff;font-size:.75rem;font-weight:400;border-radius:6px;white-space:normal;min-width:200px;max-width:280px;text-align:center;line-height:1.4;opacity:0;visibility:hidden;transition:all .15s ease;pointer-events:none;z-index:1000;box-shadow:0 4px 12px #00000026}.unified-control-panel .toggle-control[title]:before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:hsl(var(--gray-900));opacity:0;visibility:hidden;transition:all .15s ease;pointer-events:none;z-index:1000}.unified-control-panel .toggle-control[title]:hover:after,.unified-control-panel .toggle-control[title]:hover:before{opacity:1;visibility:visible}.timeline-controls button[title]{position:relative}.timeline-controls button[title]:after{content:attr(title);position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);padding:6px 10px;background:hsl(var(--gray-900));color:#fff;font-size:.75rem;font-weight:400;border-radius:4px;white-space:nowrap;opacity:0;visibility:hidden;transition:all .15s ease;pointer-events:none;z-index:1000;box-shadow:0 4px 12px #0003}.timeline-controls button[title]:before{content:"";position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);border:5px solid transparent;border-bottom-color:hsl(var(--gray-900));opacity:0;visibility:hidden;transition:all .15s ease;pointer-events:none;z-index:1000}.timeline-controls button[title]:hover:after,.timeline-controls button[title]:hover:before{opacity:1;visibility:visible}.speed-control-wrapper button.active[title]:after,.speed-control-wrapper button.active[title]:before{display:none}.timeline-controls-panel{background:#fff;border-radius:8px;overflow:visible;margin-bottom:16px;border:1px solid hsl(var(--border));box-shadow:0 1px 3px #0000000d}.timeline-controls-panel .timeline-panel{margin-bottom:0;border-radius:0;box-shadow:none}.timeline-controls-panel .control-panel{margin-bottom:0;border-radius:0 0 8px 8px;border:none;border-top:1px solid hsl(var(--gray-200));background:#fff}.timeline-panel{background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--primary-hover)));border-radius:8px;overflow:visible;margin-bottom:16px;box-shadow:0 2px 8px hsl(var(--primary) / .2)}.timeline-main-row{display:flex;align-items:center;gap:16px;padding:12px 16px;color:#fff}.timeline-controls{display:flex;align-items:center;gap:8px;flex-shrink:0}.play-btn-circle{width:40px;height:40px;border-radius:50%;border:none;background:#fff;color:hsl(var(--primary));cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000026;transition:all .2s ease}.play-btn-circle:hover{transform:scale(1.05);box-shadow:0 4px 12px #0003}.play-btn-circle:active{transform:scale(.98)}.play-btn-circle svg{width:20px;height:20px}.reset-btn-icon{width:32px;height:32px;border-radius:6px;border:none;background:#ffffff26;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.reset-btn-icon:hover{background:#ffffff40}.reset-btn-icon svg{width:18px;height:18px}.speed-control-wrapper{position:relative}.speed-btn-icon{height:32px;padding:0 10px;border-radius:6px;border:none;background:#ffffff26;color:#fff;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .2s ease;font-size:12px;font-weight:500}.speed-btn-icon:hover,.speed-btn-icon.active{background:#ffffff40}.speed-btn-icon svg{width:16px;height:16px}.speed-label{font-size:11px;opacity:.9}.speed-dropdown{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);background:#fff;border-radius:8px;box-shadow:0 4px 16px #0003;padding:4px;z-index:1000;min-width:70px;border:1px solid hsl(var(--border))}.speed-dropdown:before{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%);border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid white}.speed-option{display:block;width:100%;padding:8px 12px;border:none;background:transparent;color:#374151;font-size:13px;text-align:center;cursor:pointer;border-radius:4px;transition:all .15s ease;font-weight:500}.speed-option:hover{background:#f3f4f6;color:#111827}.speed-option.active{background:hsl(var(--primary));color:#fff;font-weight:600}.timeline-scrubber{flex:1;position:relative;padding:8px 0;cursor:pointer;-webkit-user-select:none;user-select:none}.timeline-scrubber.dragging{cursor:grabbing}.scrubber-track{height:8px;background:#ffffff40;border-radius:4px;overflow:hidden}.scrubber-fill{height:100%;background:#fff;border-radius:4px}.timeline-info{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0;min-width:160px}.timeline-label{font-weight:600;font-size:.9rem;color:#fff}.timeline-sublabel{font-size:.75rem;color:#ffffffbf}.timeline-markers-row{padding:4px 16px 8px}.timeline-panel .timeline-markers{position:relative;height:22px;display:flex;align-items:center}.timeline-panel .degree-marker{position:absolute;transform:translate(-50%);cursor:pointer;transition:all .15s ease}.timeline-panel .degree-marker:hover .marker-label{color:#fff;background:#ffffff40}.timeline-panel .marker-label{font-size:.7rem;color:#fff9;font-weight:600;padding:3px 8px;border-radius:4px;background:transparent;transition:all .15s ease;white-space:nowrap}.timeline-panel .degree-marker.active .marker-label{color:#ffffffd9}.timeline-panel .degree-marker.current .marker-label{color:hsl(var(--primary));background:#fff;font-weight:700}
