*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:#fff;color:#1f2328;font-size:14px}#root{min-height:100vh}.admin-layout{display:flex;min-height:100vh}.sidebar{width:240px;flex-shrink:0;background:#f6f8fa;border-right:1px solid #d0d7de;display:flex;flex-direction:column}.sidebar-brand{padding:1.25rem 1rem;border-bottom:1px solid #d0d7de;display:flex;align-items:center;gap:.75rem}.sidebar-logo{width:36px;height:36px;background:linear-gradient(135deg,#238636,#2ea043);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#fff}.sidebar-title{font-weight:600;font-size:1rem;color:#1f2328}.sidebar-nav{flex:1;padding:.75rem 0;overflow-y:auto}.sidebar-section{padding:.5rem 1rem .25rem;font-size:11px;font-weight:600;color:#656d76;text-transform:uppercase;letter-spacing:.05em}.nav-item{width:100%;display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;border:none;background:transparent;color:#656d76;font-size:14px;cursor:pointer;text-align:left;transition:background .15s,color .15s;text-decoration:none}.nav-item:hover{background:#eaeef2;color:#1f2328}.nav-item.active{background:#eaeef2;color:#0969da;border-right:2px solid #0969da;font-weight:500}.nav-icon{font-size:1rem;opacity:.9}.nav-label{flex:1}.sidebar-footer{padding:.75rem 1rem;border-top:1px solid #d0d7de;display:flex;align-items:center;gap:.5rem;font-size:12px;color:#656d76}.status-dot{width:6px;height:6px;background:#3fb950;border-radius:50%;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.main{flex:1;display:flex;flex-direction:column;min-width:0;background:#fff}.topbar{padding:1rem 1.5rem;background:#fff;border-bottom:1px solid #d0d7de;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem}.topbar-title{margin:0;font-size:1.25rem;font-weight:600;color:#1f2328}.topbar-meta{display:flex;align-items:center;gap:.5rem;font-size:13px;color:#656d76}.meta-divider{color:#d0d7de}.meta-count{color:#1f2328}.content{flex:1;padding:1.5rem;overflow-y:auto;background:#fff}.card{background:#fff;border:1px solid #d0d7de;border-radius:8px;padding:1.25rem;margin-bottom:1rem}.card.full{margin-bottom:1rem}.card.half{flex:1;min-width:0}.card-row{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.card-title{margin:0 0 1rem;font-size:1rem;font-weight:600;color:#1f2328}.kpi-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:1rem;margin-bottom:1.5rem}.honeypot-kpis{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;margin-bottom:1.25rem}.kpi-card{background:#f6f8fa;border:1px solid #d0d7de;border-radius:8px;padding:1.25rem;display:flex;flex-direction:column;gap:.25rem}.kpi-card.big{padding:1rem}.kpi-card.big .kpi-value{font-size:1.5rem}.kpi-value{font-size:1.75rem;font-weight:700;color:#0969da;line-height:1.2}.kpi-label{font-size:12px;color:#656d76;text-transform:uppercase;letter-spacing:.02em}.honeypot-dashboard{max-width:1600px}.dashboard-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}@media (max-width: 1200px){.dashboard-row{grid-template-columns:1fr}}.chart-card{min-height:320px}.chart-card .leaflet-container{height:320px}.donut-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1rem}@media (max-width: 1000px){.donut-row{grid-template-columns:repeat(2,1fr)}}@media (max-width: 600px){.donut-row{grid-template-columns:1fr}}.donut-card{background:#fff;border:1px solid #d0d7de;border-radius:8px;padding:1rem}.donut-title{margin:0 0 .5rem;font-size:.9rem;font-weight:600;color:#1f2328}.donut-empty{height:200px;display:flex;align-items:center;justify-content:center;color:#656d76;font-size:13px}.map-with-legend{display:flex;flex-direction:column;gap:.5rem}.map-legend{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:11px;color:#656d76}.map-legend-title{margin-right:.5rem;font-weight:600}.map-legend i{display:inline-block;width:10px;height:10px;border-radius:50%}.port-legend{display:flex;gap:1rem;margin-bottom:.5rem;font-size:12px;color:#656d76}.leaflet-container{height:400px;border-radius:8px}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;padding:.75rem 1rem;background:#f6f8fa;color:#656d76;font-weight:600;border-bottom:1px solid #d0d7de}.data-table td{padding:.75rem 1rem;border-bottom:1px solid #d0d7de}.data-table tbody tr:hover{background:#f6f8fa}.data-table code{font-size:12px;background:#eaeef2;padding:.2rem .4rem;border-radius:4px;color:#1f2328}.attack-grid{display:flex;flex-wrap:wrap;gap:.35rem}.attack-badge{display:inline-block;padding:.25rem .5rem;background:#238636;border-radius:4px;font-size:.8rem;font-weight:500}.attack-badge.small{font-size:.75rem;padding:.15rem .35rem}.attack-inline{display:flex;flex-wrap:wrap;gap:.25rem}.predict-dashboard{max-width:1200px}.predict-message{color:#656d76;font-size:14px;margin:0}.predict-message code{background:#eaeef2;padding:.2rem .4rem;border-radius:4px;font-size:13px}.kpi-mono{font-family:ui-monospace,monospace;font-size:1.2rem!important}.settings-block{font-size:14px;line-height:1.6;color:#656d76}.settings-block p{margin:0 0 .75rem}.settings-block code{background:#eaeef2;padding:.2rem .4rem;border-radius:4px;font-size:13px;color:#1f2328}.siem-form{display:flex;flex-direction:column;gap:.75rem;max-width:520px;margin-top:.5rem}.siem-form .form-row{display:grid;grid-template-columns:180px 1fr;align-items:center;gap:.75rem;font-size:13px;color:#656d76}.siem-form .form-row label{font-weight:500;color:#1f2328}.siem-form input{border:1px solid #d0d7de;border-radius:8px;padding:8px 10px;font-size:14px;color:#1f2328}.btn-primary{align-self:flex-start;margin-top:.5rem;padding:8px 16px;background:#0969da;color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;font-size:14px}.btn-primary:hover:not(:disabled){background:#0550ae}.btn-primary:disabled{opacity:.65;cursor:not-allowed}a{color:#0969da;text-decoration:none}a:hover{text-decoration:underline}.app-splash{min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:24px;background:#f6f8fa}.app-splash-spinner{width:40px;height:40px;border:3px solid #d0d7de;border-top-color:#0969da;border-radius:50%;animation:spin .8s linear infinite}.app-splash--error{color:#cf222e}.app-splash-hint{margin:8px 0 0;font-size:12px;color:#656d76;max-width:420px;text-align:center}.app-splash-hint code{font-size:11px;background:#eaeef2;padding:2px 6px;border-radius:4px}.app-splash--error h2{margin:0;font-size:1.25rem}@keyframes spin{to{transform:rotate(360deg)}}:root{--color-primary: #0969da;--color-primary-hover: #0550ae;--color-success: #1a7f37;--color-danger: #cf222e}.admin-content{flex:1;padding:1.5rem;overflow-y:auto;background:#fff}.header{height:64px;padding:0 1.5rem;background:#fff;border-bottom:1px solid #d0d7de;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.header-left{min-width:0}.header-title{margin:0;font-size:1.125rem;font-weight:600;color:#1f2328}.header-subtitle{margin:2px 0 0;font-size:12px;color:#656d76}.header-right{display:flex;align-items:center;gap:12px}.header-badge{font-size:12px;color:#656d76;padding:4px 10px;background:#f6f8fa;border-radius:6px}.header-badge-demo{background:#0969da26;color:var(--color-primary)}.header-refresh{font-size:13px;padding:6px 12px;background:var(--color-primary);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:500}.header-refresh:hover:not(:disabled){background:var(--color-primary-hover)}.header-refresh:disabled{opacity:.7;cursor:not-allowed}.page-header{margin-bottom:1.5rem}.page-header h1{margin:0;font-size:1.375rem;font-weight:600;color:#1f2328}.page-header p{margin:4px 0 0;font-size:14px;color:#656d76}.page-loading,.page-error{padding:1.5rem;color:#656d76}.page-error{color:var(--color-danger)}.page-card{background:#fff;border-radius:8px;border:1px solid #d0d7de;padding:1.25rem;margin-bottom:1.25rem}.page-card-title{margin:0 0 1rem;font-size:1rem;font-weight:600;color:#1f2328}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.stat-card{padding:1rem;background:#f6f8fa;border-radius:8px;border:1px solid #d0d7de}.stat-label{display:block;font-size:12px;color:#656d76;margin-bottom:4px}.stat-value{font-size:1.375rem;font-weight:700;color:#1f2328}.stat-sub{display:block;font-size:11px;color:#656d76;margin-top:4px}.formula-text{margin:0;font-family:ui-monospace,monospace;font-size:14px;color:#1f2328}.formula-meta{margin:8px 0 0;font-size:12px;color:#656d76}.exchange-block{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 16px}.exchange-pair{font-weight:600;font-size:16px}.exchange-rate{font-size:1.5rem;font-weight:700;color:var(--color-primary)}.exchange-meta{width:100%;font-size:12px;color:#656d76}.data-table-label{color:#656d76;font-size:13px;width:220px}.data-table-value{font-weight:500;color:#1f2328}.text-muted{font-size:13px;color:#656d76;margin:0 0 12px}.forecast-sample{display:flex;flex-direction:column;gap:6px}.forecast-row{display:grid;grid-template-columns:1fr auto auto auto auto;gap:12px;font-size:12px;font-family:ui-monospace,monospace;padding:6px 0;border-bottom:1px solid #d0d7de}.report-actions{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap}.report-export{text-decoration:none;display:inline-flex;align-items:center}.report-notes{margin:0;padding-left:20px;color:#656d76}.report-notes li{margin:6px 0}.whatif-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;align-items:end}.whatif-form label{display:flex;flex-direction:column;font-size:12px;color:#656d76;gap:6px}.whatif-form input{border:1px solid #d0d7de;border-radius:8px;padding:8px 10px}.alerts-list{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.alert-item{border:1px solid #d0d7de;border-left-width:4px;border-radius:8px;padding:12px;display:flex;justify-content:space-between;gap:12px;align-items:center}.alert-item p{margin:3px 0 0}.alert-high{border-left-color:#d4a72c}.alert-critical{border-left-color:var(--color-danger)}.alert-medium{border-left-color:var(--color-primary)}.alert-value{font-size:12px;font-weight:600}@media (max-width: 768px){.sidebar{width:64px}.sidebar-title,.sidebar-section,.nav-label{display:none}.sidebar-footer span:last-child{display:none}.card-row{flex-direction:column}.forecast-row{grid-template-columns:1fr 1fr}}
