.event-log { margin-top: 22px; border-top: 1px solid var(--line); padding-top: 18px; }
.hero-copy { position: relative; padding-top: 28px; }
.hero .hero-label { position: absolute; left: 188px; top: -28px; font-size: 36px !important; line-height: 1.1; letter-spacing: 2.6px !important; margin: 0 !important; white-space: nowrap; }
.event-log-title { display: flex; justify-content: space-between; align-items: end; gap: 16px; margin-bottom: 10px; }
.event-log-title h4 { margin: 0; font-size: 14px; }
.event-log-title span { font-size: 11px; color: var(--muted); }
.event-table-wrap { overflow-x: auto; border: 1px solid var(--line); border-radius: 12px; }
.event-table { width: 100%; border-collapse: collapse; min-width: 1800px; font-size: 12px; }
.event-table th, .event-table td { padding: 10px 11px; text-align: left; border-bottom: 1px solid #edf1ee; white-space: nowrap; }
.event-table th { background: #f4f8f5; color: var(--muted); font-size: 11px; }
.event-table tbody tr:last-child td { border-bottom: 0; }
.event-table code { font-size: 11px; }
.event-status { display: inline-block; border-radius: 20px; padding: 3px 8px; font-weight: 800; }
.event-status.allowed { background: #e6f9ed; color: #078e40; }
.event-status.blocked { background: #fff0f0; color: #b63232; }
.no-events { text-align: center !important; color: var(--muted); padding: 20px !important; }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 24px; align-items: start; }
.dashboard-main { min-width: 0; }
.dashboard-main .hero { display: block; }
.dashboard-main .metric-grid { margin-top: 28px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ip-sidebar { position: sticky; top: 94px; background: #fff; border: 1px solid var(--line); border-radius: 22px; padding: 20px; box-shadow: var(--shadow); }
.ip-sidebar-head { display: flex; align-items: end; justify-content: space-between; gap: 12px; }
.ip-sidebar-head h2 { margin: 5px 0 0; font-size: 22px; }
.ip-sidebar-head > strong { display: grid; place-items: center; min-width: 42px; height: 42px; border-radius: 13px; background: #e8f8ee; color: #078e40; font-size: 20px; }
.ip-help { margin: 12px 0 16px; color: var(--muted); font-size: 12px; line-height: 1.6; }
.ip-filter-form { display: grid; gap: 8px; margin-bottom: 12px; padding: 12px; border: 1px solid var(--line); border-radius: 14px; background: #fff; }
.ip-filter-form input, .ip-filter-form select { width: 100%; border: 1px solid #d6dfda; border-radius: 10px; padding: 9px 10px; background: #fff; color: var(--ink); }
.ip-filter-form > div { display: grid; grid-template-columns: 1fr auto; gap: 8px; align-items: center; }
.ip-filter-form button { padding: 9px 12px; }
.ip-filter-form a { color: var(--green); font-size: 12px; font-weight: 800; text-decoration: none; padding: 8px; }
.ip-filter-form small { color: var(--muted); }
.manual-block-form { display: grid; gap: 9px; padding: 14px; background: #f6f9f7; border-radius: 14px; }
.manual-block-form label { margin: 0; }
.manual-block-form input, .manual-block-form select, .ip-block-form input, .ip-block-form select { width: 100%; border: 1px solid #d6dfda; border-radius: 10px; padding: 9px 10px; background: #fff; color: var(--ink); }
.manual-block-form button { width: 100%; }
.blacklist-list { margin: 14px 0; padding: 12px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.blacklist-list > summary { font-weight: 800; color: var(--ink); }
.active-block { display: flex; justify-content: space-between; gap: 8px; align-items: center; margin-top: 9px; padding: 9px; background: #fff4f4; border-radius: 10px; }
.active-block div { min-width: 0; }
.active-block code, .active-block small { display: block; overflow: hidden; text-overflow: ellipsis; }
.active-block small { margin-top: 3px; color: var(--muted); }
.active-block form { margin: 0; }
.active-block button { border: 0; background: transparent; color: var(--red); font-size: 20px; cursor: pointer; }
.ip-rotator { max-height: 520px; overflow-y: auto; scroll-behavior: smooth; padding-right: 4px; scrollbar-width: thin; }
.ip-item { padding: 13px; margin-bottom: 10px; border: 1px solid var(--line); border-radius: 14px; background: #fbfdfc; }
.ip-item.is-blacklisted { border-color: #efb6b6; background: #fffafa; }
.ip-item-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.ip-item-head code { margin-right: auto; font-weight: 800; font-size: 12px; }
.ip-badge { padding: 3px 6px; border-radius: 20px; background: #eef2ef; color: var(--muted); font-size: 9px; font-weight: 800; }
.ip-badge.repeat { background: #fff3d5; color: #986900; }
.ip-badge.blacklisted { background: #ffe5e5; color: #ad2929; }
.ip-meta { display: flex; justify-content: space-between; gap: 8px; margin: 8px 0; color: var(--muted); font-size: 10px; }
.ip-counts { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.ip-counts span { padding: 7px; border-radius: 9px; background: #f0f5f2; font-size: 9px; color: var(--muted); text-align: center; }
.ip-counts b { display: block; color: var(--ink); font-size: 15px; }
.ip-item details { margin-top: 10px; }
.ip-item details > summary { font-size: 11px; }
.ip-trail { list-style: none; margin: 9px 0; padding: 0; }
.ip-trail li { display: grid; grid-template-columns: 1fr; gap: 2px; padding: 8px 0; border-bottom: 1px solid #edf1ee; font-size: 10px; }
.ip-trail li span, .ip-trail li em { color: var(--muted); font-style: normal; }
.ip-block-form { display: grid; gap: 7px; margin-top: 10px; }
.blacklist-state { display: grid; gap: 3px; color: var(--muted); font-size: 10px; margin: 9px 0; }
.compact-button { padding: 8px 10px; font-size: 11px; }
.ip-empty { padding: 25px 10px; text-align: center; color: var(--muted); font-size: 12px; }
.ip-empty.small { padding: 10px; margin: 0; }
.ip-pagination { display: grid; grid-template-columns: 1fr auto 1fr; gap: 8px; align-items: center; margin-top: 12px; }
.ip-pagination a, .ip-pagination span { padding: 9px 8px; border-radius: 9px; background: #f0f5f2; color: var(--ink); font-size: 11px; font-weight: 800; text-align: center; text-decoration: none; }
.ip-pagination span { color: #a9b2ad; }
.ip-pagination strong { font-size: 11px; white-space: nowrap; }
@media (max-width: 1050px) { .dashboard-grid { grid-template-columns: 1fr; } .ip-sidebar { position: static; } .ip-rotator { max-height: 480px; } }
@media (max-width: 800px) { .event-log-title { display: block; } .event-log-title span { display: block; margin-top: 5px; } .hero-copy { padding-top: 0; } .hero .hero-label { position: static; font-size: 26px !important; white-space: normal; margin-bottom: 10px !important; } }
.shell:has(.dashboard-grid),.shell:has(.link-detail-page){max-width:1760px;padding-top:28px}
.dashboard-main .cards{grid-template-columns:1fr}
.dashboard-main .hero .hero-label{position:static;font-size:18px!important;letter-spacing:1px!important;margin-bottom:12px!important}
.dashboard-main .hero-copy{padding-top:0}
.dashboard-main .hero h1{font-size:28px}
.link-overview{display:flex;align-items:center;justify-content:space-between;gap:24px;margin:18px 0 4px;color:var(--muted);font-size:14px}
.detail-link{text-decoration:none;color:#087b3e;white-space:nowrap}
.link-detail-page .link-overview .detail-link{display:none}
.detail-toolbar{display:flex;justify-content:space-between;margin:0 0 22px}
.detail-toolbar a{color:#087b3e;text-decoration:none;font-weight:700}
.link-detail-page .link-card{box-shadow:none}
.link-detail-page .detail-grid{grid-template-columns:minmax(0,1fr) 260px}
.link-detail-page .stack.compact{max-width:850px}
.visit-title{margin-top:30px;align-items:center}
.visit-title p{margin:8px 0 0;color:var(--muted);font-size:13px}
.reference-note{background:#edf3ef;border-left:3px solid #8db49c;padding:12px 16px;font-size:13px;line-height:1.7;color:#506257;margin-bottom:20px}
.visit-list{display:grid;gap:16px}
.visit-card{background:white;border:1px solid var(--line);border-radius:16px;overflow:hidden;min-width:0}
.visit-head{padding:16px 22px;background:#f8fbf9;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px}
.visit-head>div{display:flex;align-items:center;gap:16px;min-width:0}
.visit-head code{font-size:16px;font-weight:700;overflow-wrap:anywhere}
.visit-head time{font-size:12px;color:var(--muted);white-space:nowrap}
.visit-head>div:last-child{font-size:13px}
.visit-body{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:20px 22px}
.visit-body section{min-width:0}
.visit-body section+section{border-left:1px solid var(--line);padding-left:28px}
.visit-body h4{font-size:13px;margin:0 0 16px;color:#365a44}
.visit-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 24px;margin:0}
.visit-fields div{min-width:0}
.visit-fields dt{color:var(--muted);font-size:12px;margin-bottom:6px}
.visit-fields dd{margin:0;font-size:14px;line-height:1.5;overflow-wrap:anywhere;white-space:normal}
.visit-card footer{padding:10px 22px;border-top:1px solid #edf1ee;color:var(--muted);font-size:12px}
.event-status.pending{background:#fff4d9;color:#946b12}
.shell:has(.link-detail-page){max-width:none;padding-left:24px;padding-right:24px}
.visits-table{width:100%;table-layout:fixed;border-collapse:collapse;background:#fff;font-size:12px}
.visits-table th,.visits-table td{padding:12px 7px;border-bottom:1px solid #e1e8e3;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:44px}
.visits-table th{background:#e8f0eb;color:#395844;font-size:12px;position:sticky;top:72px;z-index:2}
.visits-table tbody tr:nth-child(even){background:#f6f9f7}
.visits-table tbody tr:hover{background:#e8f7ed}
.visits-table td:first-child,.visits-table td:nth-child(2){font-variant-numeric:tabular-nums}
.visit-pagination{display:flex;align-items:center;justify-content:flex-end;gap:20px;margin:16px 0;font-size:13px}
.visit-pagination a{color:#087b3e;text-decoration:none;font-weight:700}
.visit-pagination>span{color:#99a59e}
.visit-pagination form,.visit-pagination label{display:flex;flex-direction:row;align-items:center;gap:8px}
.visit-pagination input[type=number]{width:76px;padding:7px}
.visit-pagination button{padding:8px 12px}
.ip-history-search{margin-bottom:24px;padding:22px 26px}
.ip-history-search h2{font-size:20px;margin-bottom:8px}
.ip-history-search p{font-size:13px}
.ip-history-search form{display:flex;align-items:center;gap:14px;margin-top:16px}
.ip-history-search input{max-width:540px;flex:1}
.ip-history-search button{align-self:center;white-space:nowrap}
.ip-history-table td a{color:#087b3e;font-weight:700;text-decoration:none}
.ip-history-table td a:hover{text-decoration:underline}
