:root{--primary-accent: #00C8C8;--primary-hover: #00E0E0;--attack-red: #FF3B30;--bg-deep: #030808;--bg-panel: #0a1414;--bg-header: #060e0e;--text-white: #e0f0f0;--text-gray: #6a8a8a;--border-color: rgba(0, 200, 200, .15);--border-bright: rgba(0, 200, 200, .3);--font-heading: "Montserrat", sans-serif;--font-body: "Inter", sans-serif}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%;overflow:hidden}body{background-color:var(--bg-deep);color:var(--text-white);font-family:var(--font-body);line-height:1.4;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden;opacity:0;transition:opacity 1.2s ease}.app.app-loaded{opacity:1}.app-main{flex:1;display:flex;flex-direction:column;position:relative;overflow:hidden}.app-header{height:40px;background:var(--bg-header);border-bottom:1px solid var(--border-color);display:flex;align-items:center;padding:0 16px;z-index:100;flex-shrink:0}.header-inner{width:100%;display:flex;justify-content:space-between;align-items:center;position:relative}a.header-brand,.header-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit}a.header-brand:hover .logo-name{color:var(--primary-accent)}.header-logo{border-radius:4px;object-fit:contain}.logo-text{display:flex;align-items:center;gap:6px;font-family:var(--font-heading)}.logo-name{font-size:.8rem;font-weight:800;letter-spacing:2px;color:var(--text-white)}.logo-sep{color:var(--primary-accent);font-weight:700;font-size:.8rem}.logo-sub{font-size:.65rem;font-weight:600;letter-spacing:1.5px;color:var(--text-gray);text-transform:uppercase}.header-center{position:absolute;left:50%;transform:translate(-50%);text-align:center}.header-counter{font-family:var(--font-heading);font-size:.6rem;font-weight:600;letter-spacing:2px;color:var(--primary-accent);text-shadow:0 0 10px rgba(0,200,200,.4)}.header-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.header-status{display:flex;align-items:center;gap:6px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--primary-accent);animation:pulse-dot 2s infinite;box-shadow:0 0 6px var(--primary-accent)}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.status-text{font-size:.65rem;font-weight:700;letter-spacing:2px;color:var(--primary-accent);font-family:var(--font-heading);text-shadow:0 0 8px rgba(0,200,200,.5)}.map-container{flex:1;position:relative;overflow:hidden}.threat-map{width:100%;height:100%;position:relative;background:repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(0,200,200,.008) 3px,rgba(0,200,200,.008) 4px),radial-gradient(ellipse 60% 50% at 50% 50%,#050f0f,#030808)}.threat-map svg{width:100%!important;height:100%!important;outline:none;touch-action:none}.threat-map .rsm-geography{transition:fill .3s ease,stroke .3s ease}.radar-sweep{position:absolute;inset:0;background:conic-gradient(from 0deg at 50% 50%,transparent 0deg,rgba(0,200,200,.03) 15deg,rgba(0,200,200,.05) 35deg,transparent 65deg,transparent 360deg);animation:radar-rotate 8s linear infinite;pointer-events:none;z-index:2;mix-blend-mode:screen}@keyframes radar-rotate{to{transform:rotate(360deg)}}.grid-overlay{position:absolute;inset:0;pointer-events:none;z-index:1;background:repeating-linear-gradient(0deg,transparent,transparent 79px,rgba(0,200,200,.025) 79px,rgba(0,200,200,.025) 80px),repeating-linear-gradient(90deg,transparent,transparent 79px,rgba(0,200,200,.025) 79px,rgba(0,200,200,.025) 80px)}.map-vignette{position:absolute;inset:0;pointer-events:none;z-index:5;background:radial-gradient(ellipse 65% 55% at 50% 50%,transparent 25%,rgba(3,8,8,.45) 65%,rgba(3,8,8,.88) 100%)}.threat-map:after{content:"";position:absolute;top:15%;left:25%;width:50%;height:65%;background:radial-gradient(circle,rgba(0,200,200,.025) 0%,transparent 65%);pointer-events:none;z-index:1}.map-label{font-family:var(--font-heading);letter-spacing:.5px;pointer-events:none;text-shadow:0 0 6px rgba(0,0,0,.9),0 0 12px rgba(0,0,0,.6)}.map-threat-counter{position:absolute;bottom:8px;right:12px;display:flex;align-items:center;gap:8px;background:#0a1414d9;border:1px solid var(--border-color);padding:5px 12px;z-index:10;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.counter-pulse{width:6px;height:6px;border-radius:50%;background:var(--primary-accent);animation:pulse-dot 1.5s infinite;box-shadow:0 0 6px var(--primary-accent)}.counter-label{font-family:var(--font-heading);font-size:.5rem;font-weight:600;letter-spacing:1.5px;color:var(--text-gray)}.counter-value{font-family:var(--font-heading);font-size:.8rem;font-weight:800;color:var(--primary-accent);min-width:18px;text-align:center}.stats-bar{position:absolute;top:12px;left:12px;display:flex;gap:2px;z-index:10;pointer-events:none}.stat-item{background:#0a1414e0;border:1px solid var(--border-color);padding:8px 14px;display:flex;flex-direction:column;align-items:center;min-width:85px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.stat-value{font-family:var(--font-heading);font-size:1rem;font-weight:800;color:var(--text-white);letter-spacing:.5px}.stat-label{font-size:.5rem;color:var(--text-gray);letter-spacing:1px;margin-top:2px;text-transform:uppercase;font-weight:600}.filter-bar{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:6px;z-index:10;pointer-events:auto;align-items:flex-end}.filter-types{display:flex;gap:3px;flex-wrap:wrap;justify-content:flex-end}.filter-btn{background:#0a1414e0;border:1px solid var(--border-color);color:var(--text-gray);padding:5px 10px;font-size:.6rem;font-family:var(--font-heading);font-weight:600;letter-spacing:.8px;text-transform:uppercase;cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .2s;border-radius:0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.filter-btn:hover{background:#0f1e1ef2}.filter-btn.active{background:#0a1414f2}.filter-dot{width:5px;height:5px;border-radius:50%}.filter-time{display:flex;gap:2px}.time-btn{background:#0a1414e0;border:1px solid var(--border-color);color:var(--text-gray);padding:5px 10px;font-size:.6rem;font-family:var(--font-heading);font-weight:700;letter-spacing:1px;cursor:pointer;transition:all .2s;border-radius:0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.time-btn.active{background:var(--primary-accent);border-color:var(--primary-accent);color:var(--bg-deep)}.time-btn:hover:not(.active){background:#0f1e1ef2;color:var(--text-white)}.threat-ticker{height:36px;background:var(--bg-header);border-top:1px solid var(--border-color);display:flex;align-items:center;flex-shrink:0;overflow:hidden;z-index:20}.ticker-label{display:flex;align-items:center;gap:6px;padding:0 12px;font-family:var(--font-heading);font-size:.55rem;font-weight:700;letter-spacing:1.5px;color:var(--primary-accent);white-space:nowrap;border-right:1px solid var(--border-color);height:100%;flex-shrink:0}.ticker-pulse{width:5px;height:5px;border-radius:50%;background:var(--primary-accent);animation:pulse-dot 1.5s infinite;box-shadow:0 0 4px var(--primary-accent)}.ticker-scroll{flex:1;overflow:hidden;position:relative}.ticker-track{display:flex;gap:0;white-space:nowrap;width:max-content}.ticker-item{display:inline-flex;align-items:center;gap:8px;padding:0 16px;height:36px;border-left:2px solid var(--primary-accent);font-size:.62rem;color:var(--text-gray);flex-shrink:0}.ticker-badge{font-size:.48rem;font-weight:700;padding:1px 5px;letter-spacing:.5px;text-transform:uppercase;color:var(--bg-deep);font-family:var(--font-heading);white-space:nowrap}.ticker-route{color:var(--text-white);white-space:nowrap}.ticker-arrow{color:var(--primary-accent);font-weight:700}.ticker-port{color:var(--primary-accent);font-family:monospace;font-weight:600;font-size:.58rem}.ticker-time{color:var(--text-gray);font-size:.52rem}.drawer-toggle{position:absolute;bottom:46px;right:12px;display:flex;align-items:center;gap:6px;background:#0a1414e0;border:1px solid var(--border-color);color:var(--primary-accent);padding:5px 12px;font-family:var(--font-heading);font-size:.55rem;font-weight:700;letter-spacing:1.5px;cursor:pointer;z-index:15;transition:all .2s;border-radius:0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.drawer-toggle:hover{background:#0f1e1ef2;border-color:var(--border-bright)}.drawer-panel{position:absolute;top:0;right:0;bottom:0;width:300px;background:#0a1414f2;border-left:1px solid var(--border-color);z-index:25;transform:translate(100%);transition:transform .3s ease;display:flex;flex-direction:column;overflow-y:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.drawer-panel.open{transform:translate(0)}.drawer-header{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border-color)}.drawer-header h3{font-family:var(--font-heading);font-size:.7rem;font-weight:700;letter-spacing:2px;color:var(--primary-accent)}.drawer-close{background:none;border:none;color:var(--text-gray);font-size:1.2rem;cursor:pointer;padding:4px 8px}.drawer-close:hover{color:var(--text-white)}.drawer-content{flex:1;overflow-y:auto}.drawer-content::-webkit-scrollbar{width:3px}.drawer-content::-webkit-scrollbar-track{background:transparent}.drawer-content::-webkit-scrollbar-thumb{background:var(--border-color)}.stats-panel{padding:14px 16px;border-top:1px solid var(--border-color)}.stats-panel-title{font-family:var(--font-heading);font-size:.6rem;font-weight:700;letter-spacing:2px;color:var(--text-gray);margin-bottom:10px}.stats-list{display:flex;flex-direction:column;gap:6px}.stats-row{display:flex;align-items:center;gap:8px;font-size:.68rem}.stats-row-label{width:90px;flex-shrink:0;color:var(--text-gray);display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stats-bar-track{flex:1;height:3px;background:#00c8c80d;position:relative}.stats-bar-fill{height:100%;background:var(--primary-accent);transition:width .5s ease}.stats-bar-fill.port-bar{background:#5ac8fa}.stats-row-value{font-family:var(--font-heading);font-weight:700;font-size:.65rem;color:var(--text-white);min-width:26px;text-align:right}.attack-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}.port-service{color:var(--text-gray);font-size:.55rem;opacity:.6}.data-sources-list{display:flex;flex-direction:column;gap:8px}.data-source-item{display:flex;align-items:center;gap:10px;padding:8px 10px;background:#00c8c808;border:1px solid var(--border-color);cursor:pointer;transition:all .2s;text-decoration:none}.data-source-item:hover{background:#00c8c814;border-color:var(--border-bright)}.data-source-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.data-source-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.data-source-name{font-family:var(--font-heading);font-size:.65rem;font-weight:700;letter-spacing:1px}.data-source-desc{font-size:.52rem;color:var(--text-gray);line-height:1.3}.data-source-arrow{color:var(--text-gray);font-size:.75rem;flex-shrink:0;opacity:.5;transition:opacity .2s}.data-source-item:hover .data-source-arrow{opacity:1}.modal-backdrop{position:fixed;inset:0;background:#030808b3;display:flex;align-items:center;justify-content:center;z-index:200;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:modalFadeIn .2s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.country-modal{background:#0a1414f7;border:1px solid var(--border-bright);min-width:320px;max-width:400px;animation:modalSlideIn .3s ease;box-shadow:0 0 40px #00c8c814}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-color)}.modal-header h3{font-family:var(--font-heading);font-size:.9rem;font-weight:700;letter-spacing:1px;color:var(--text-white)}.modal-close{background:none;border:none;color:var(--text-gray);font-size:1.4rem;cursor:pointer;padding:4px 8px}.modal-close:hover{color:var(--text-white)}.modal-stat-big{padding:20px;text-align:center;border-bottom:1px solid var(--border-color)}.big-number{font-family:var(--font-heading);font-size:2.2rem;font-weight:800;color:var(--primary-accent);display:block;text-shadow:0 0 20px rgba(0,200,200,.3)}.big-label{font-size:.55rem;letter-spacing:2px;color:var(--text-gray);text-transform:uppercase}.modal-section{padding:14px 20px;border-bottom:1px solid var(--border-color)}.modal-section h4{font-family:var(--font-heading);font-size:.55rem;font-weight:700;letter-spacing:1.5px;color:var(--text-gray);margin-bottom:10px}.modal-bar-row{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:.7rem}.modal-bar-label{width:80px;flex-shrink:0;font-weight:600}.modal-bar-track{flex:1;height:3px;background:#00c8c80d}.modal-bar-fill{height:100%;transition:width .4s ease}.modal-bar-value{font-family:var(--font-heading);font-weight:700;font-size:.65rem;color:var(--text-white);min-width:26px;text-align:right}.modal-source-row{display:flex;justify-content:space-between;font-size:.7rem;padding:3px 0;color:var(--text-gray)}.loading-overlay{position:absolute;inset:0;background:#030808e6;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:50}.loading-overlay span{font-family:var(--font-heading);font-size:.7rem;letter-spacing:3px;color:var(--text-gray)}.loading-spinner{width:32px;height:32px;border:2px solid var(--border-color);border-top-color:var(--primary-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}*{-webkit-tap-highlight-color:transparent}button,.filter-btn,.time-btn,.drawer-toggle,.drawer-close,.modal-close{touch-action:manipulation}@supports (padding: env(safe-area-inset-top)){.app-header{padding-top:env(safe-area-inset-top);padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.threat-ticker{padding-bottom:env(safe-area-inset-bottom)}}.filter-mobile-toggle{display:none}.filter-dropdown{display:contents}@media(max-width:768px){.header-center{display:none}.stats-bar{top:6px;left:6px;right:6px;gap:1px}.stat-item{padding:4px 8px;min-width:0;flex:1}.stat-item:nth-child(n+3){display:none}.stat-value{font-size:.75rem}.stat-label{font-size:.45rem}.filter-bar{inset:auto 6px 44px auto;flex-direction:column;align-items:flex-end;gap:4px}.filter-mobile-toggle{display:flex;align-items:center;gap:6px;background:#0a1414eb;border:1px solid var(--border-color);color:var(--primary-accent);padding:6px 12px;font-family:var(--font-heading);font-size:.55rem;font-weight:700;letter-spacing:1.5px;cursor:pointer;border-radius:0;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.filter-dropdown{display:none;flex-direction:column;gap:4px;align-items:flex-end;background:#0a1414f2;border:1px solid var(--border-color);padding:8px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.filter-dropdown.open{display:flex}.filter-types{display:grid;grid-template-columns:1fr 1fr;gap:3px;justify-content:stretch}.filter-btn{padding:6px 8px;font-size:.52rem;justify-content:center}.filter-time{display:flex;gap:2px;width:100%}.time-btn{flex:1;text-align:center;padding:6px 4px}.drawer-panel{width:100%;top:auto;bottom:0;height:55vh;transform:translateY(100%);border-left:none;border-top:1px solid var(--border-color)}.drawer-panel.open{transform:translateY(0)}.drawer-toggle{bottom:44px;right:auto;left:6px}.country-modal{min-width:auto;margin:12px;max-width:calc(100vw - 24px);max-height:80vh;overflow-y:auto}.threat-ticker{height:32px}.ticker-item{height:32px;padding:0 10px;font-size:.56rem;gap:5px}.ticker-label{padding:0 8px;font-size:.5rem}.map-threat-counter{bottom:6px;right:6px;padding:3px 8px}.counter-label{font-size:.45rem}.counter-value{font-size:.7rem}.radar-sweep{animation-duration:16s;opacity:.5}}@media(max-width:480px){.app-header{height:36px;padding:0 10px}.header-brand{gap:6px}.header-logo{width:22px;height:22px}.logo-name{font-size:.65rem;letter-spacing:1px}.logo-sub,.logo-sep{display:none}.status-text{font-size:.55rem}.status-dot{width:6px;height:6px}.stats-bar{top:4px;left:4px;right:auto}.stat-item{padding:3px 6px}.stat-value{font-size:.65rem}.stat-label{font-size:.4rem;letter-spacing:.5px}.filter-bar{bottom:38px;right:4px}.filter-btn{padding:5px 6px;font-size:.48rem}.time-btn{padding:5px 4px;font-size:.52rem}.drawer-panel{height:60vh}.drawer-toggle{bottom:38px;left:4px;padding:4px 10px;font-size:.5rem}.threat-ticker{height:28px}.ticker-item{height:28px;padding:0 8px;font-size:.5rem;gap:4px}.ticker-label{padding:0 6px;font-size:.45rem;letter-spacing:1px}.ticker-badge{font-size:.42rem;padding:1px 4px}.ticker-port{font-size:.48rem}.ticker-time{display:none}}@media(max-width:360px){.logo-name{font-size:.58rem}.stat-item:nth-child(n+2){display:none}.filter-types{grid-template-columns:1fr 1fr}.filter-btn{font-size:.44rem;padding:4px 5px}}@media(hover:none)and (pointer:coarse){.threat-map svg [filter="url(#arc-glow)"],.threat-map svg [filter="url(#impact-glow)"]{filter:none!important}.radar-sweep{animation-duration:20s}.filter-btn,.time-btn,.drawer-toggle{min-height:36px}.modal-close,.drawer-close{min-width:40px;min-height:40px;display:flex;align-items:center;justify-content:center}.filter-btn:active,.time-btn:active,.drawer-toggle:active{opacity:.7;transform:scale(.96)}}@media(max-height:500px)and (orientation:landscape){.app-header{height:32px}.stats-bar{display:none}.threat-ticker,.ticker-item{height:26px}.country-modal{max-height:90vh}.drawer-panel{height:70vh}}@media(prefers-reduced-motion:reduce){.radar-sweep{animation:none;opacity:0}.status-dot,.counter-pulse,.ticker-pulse{animation:none}.app{transition:none;opacity:1}.drawer-panel{transition:none}.country-modal,.modal-backdrop{animation:none}.threat-map .rsm-geography{transition:none}}
