:root{
  --bg:#080b08;
  --bg-raise:#0d120d;
  --chrome:#0e120e;
  --rule:#22301f;
  --rule-soft:#182218;
  --prompt:#3ecf6d;
  --accent:#5ef08a;
  --body:#c8d6c8;
  --head:#e4ece4;
  --muted:#5a6d5a;
  --dim:#9aab9a;
  --path:#7d9fd8;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --sans:"IBM Plex Sans",system-ui,-apple-system,sans-serif;
}
*{box-sizing:border-box}
html{background:#050705}
body{
  margin:0;padding:28px 20px 60px;background:#050705;
  font-family:var(--mono);font-size:14px;line-height:1.7;color:var(--dim);
  -webkit-font-smoothing:antialiased;
}
.win{max-width:800px;margin:0 auto;background:var(--bg);
  border:1px solid var(--rule);border-radius:6px;overflow:hidden}

.titlebar{display:flex;align-items:center;gap:8px;padding:9px 13px;
  background:var(--chrome);border-bottom:1px solid var(--rule)}
.dot{width:9px;height:9px;border-radius:50%;background:#3d4a3d;flex:none}
.titlebar .url{font-size:11px;color:var(--muted);margin-left:8px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.sensors{display:flex;flex-wrap:wrap;gap:0 22px;padding:8px 22px;
  border-bottom:1px solid var(--rule-soft);font-size:11px;
  letter-spacing:.03em;color:var(--muted)}
.sensors b{font-weight:500;color:var(--accent)}
.pulse{display:inline-block;width:6px;height:6px;border-radius:50%;
  background:var(--accent);vertical-align:1px;margin-right:6px;
  animation:blip 2.4s ease-in-out infinite}
@keyframes blip{0%,100%{opacity:1}50%{opacity:.25}}

nav{padding:12px 22px 0}
nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:0 6px;margin:0;padding:0;font-size:12px}
nav a{display:inline-block;color:var(--accent);text-decoration:none;
  padding:2px 7px;border:1px solid transparent}
nav a:hover,nav a:focus-visible{border-color:var(--rule);background:var(--bg-raise)}
nav a[aria-current="page"]{border-color:#2f4a37;background:var(--bg-raise)}
nav .brk{color:var(--muted)}

.prompt{padding:14px 22px 0;font-size:13px;color:var(--dim);word-break:break-word}
.prompt .u{color:var(--prompt)}
.prompt .p{color:var(--path)}
.caret{display:inline-block;width:7px;height:14px;background:var(--accent);
  vertical-align:-2px;margin-left:3px;animation:blink 1.1s step-end infinite}
@keyframes blink{50%{opacity:0}}

main{padding:6px 22px 30px}

.mark{color:var(--prompt);font-size:12px;line-height:1.15;margin:10px 0 6px;
  white-space:pre;overflow-x:auto}
.tagline{color:var(--muted);font-size:12px;margin:0 0 22px}

h1{font-family:var(--sans);font-size:21px;font-weight:500;color:var(--head);
  margin:0 0 10px;line-height:1.35}
h2{font-family:var(--sans);font-size:16px;font-weight:500;color:var(--head);margin:22px 0 8px}
h3{font-family:var(--sans);font-size:15px;font-weight:500;color:var(--head);margin:18px 0 6px}
p,li{font-family:var(--sans);font-size:15px;color:var(--body);line-height:1.75}
p{margin:0 0 14px}
main a{color:var(--accent)}
blockquote{border-left:2px solid #2f4a37;margin:0 0 14px;padding-left:13px;color:var(--dim)}
hr{border:0;border-top:1px solid var(--rule-soft);margin:24px 0}

.cmd{margin:26px 0 8px;font-size:13px;color:var(--dim);font-family:var(--mono);
  padding-top:14px;border-top:1px solid var(--rule-soft)}
.cmd .u{color:var(--prompt)}
.cmd .p{color:var(--path)}

.ls{margin:0 0 8px;font-size:12px;color:var(--muted);font-family:var(--mono)}
.entry{display:grid;grid-template-columns:96px 46px 62px minmax(0,1fr);
  gap:0 14px;padding:3px 0;font-size:12.5px;color:var(--muted);font-family:var(--mono)}
.entry a{color:var(--accent);text-decoration:none;border-bottom:1px dotted #2f4a37}
.entry a:hover,.entry a:focus-visible{color:#8affb0;border-bottom-style:solid}
.entry .tags{color:#4d6b52;font-size:11px}

.meta{border-left:2px solid #2f4a37;padding-left:13px;margin:0 0 18px;
  font-size:11.5px;color:var(--muted);line-height:1.8;font-family:var(--mono)}
.meta span{color:var(--dim)}

pre{margin:0 0 16px;padding:11px 13px;background:var(--bg-raise);
  border:1px solid var(--rule-soft);border-radius:3px;color:var(--body);
  font-family:var(--mono);font-size:12.5px;line-height:1.65;overflow-x:auto}
code{font-family:var(--mono);font-size:.92em;color:var(--accent)}
pre code{color:var(--body)}
pre .c{color:var(--muted)}

.proj{padding:14px 0;border-top:1px solid var(--rule-soft)}
.proj:first-of-type{border-top:0}
.proj .row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;flex-wrap:wrap}
.proj .name{color:var(--accent);font-size:13px;font-family:var(--mono)}
.proj .state{font-size:11px;color:var(--muted);letter-spacing:.04em;font-family:var(--mono)}
.proj p{font-size:14px;margin:6px 0 0}
.stack{margin-top:7px;font-size:11px;color:#4d6b52;font-family:var(--mono)}

.postnav{border-top:1px solid var(--rule-soft);margin-top:26px;padding-top:13px;
  display:flex;justify-content:space-between;gap:14px;font-size:12px;font-family:var(--mono)}
.postnav a{color:var(--accent);text-decoration:none}

footer{margin:30px 22px 22px;padding-top:13px;border-top:1px solid var(--rule);
  display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;
  font-size:11.5px;color:var(--muted);font-family:var(--mono)}
footer a{color:var(--accent);text-decoration:none}
footer a:hover{text-decoration:underline}

a:focus-visible,nav a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

@media (max-width:620px){
  body{padding:14px 10px 40px}
  main,nav,.prompt,.sensors{padding-left:15px;padding-right:15px}
  footer{margin-left:15px;margin-right:15px}
  .entry{grid-template-columns:1fr;gap:0}
  .entry span:nth-child(-n+3){display:none}
  .mark{font-size:9px}
}
@media (prefers-reduced-motion:reduce){.caret,.pulse{animation:none}}

/* ── report components ─────────────────────────────────────────────
   Used by honeypot writeups: stat cards, day bars, log blocks,
   IOC tables, MITRE ids. Palette comes from :root above.
   ────────────────────────────────────────────────────────────────── */
:root{
  --alert:#d88a8a;
  --alert-bd:#4a2626;
  --web:#7d9fd8;
  --web-bd:#2a3a52;
}

/* badges */
.report-badges{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 20px}
.badge{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;
  padding:2px 8px;border:1px solid var(--rule);color:var(--muted);
  background:var(--bg-raise)}
.badge.ssh{color:var(--accent);border-color:#2f4a37}
.badge.web{color:var(--web);border-color:var(--web-bd)}
.badge.alert{color:var(--alert);border-color:var(--alert-bd)}

/* summary stat cards */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:8px;margin:0 0 24px}
.stat-card{background:var(--bg-raise);border:1px solid var(--rule-soft);padding:11px 13px}
.stat-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--muted)}
.stat-value{font-family:var(--mono);font-size:21px;color:var(--head);line-height:1.35;margin:2px 0}
.stat-sub{font-family:var(--mono);font-size:10.5px;color:var(--muted)}

/* per-day / per-period bar charts */
.day-trend,.period-grid{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;
  gap:8px;margin:0 0 8px;align-items:end}
.day-bar-wrap,.period-wrap{display:flex;flex-direction:column;align-items:center;gap:5px}
.day-label,.period-label{font-family:var(--mono);font-size:10.5px;color:var(--muted);order:3}
.day-val,.period-val{font-family:var(--mono);font-size:11px;color:var(--accent);order:1}
.day-bar-outer,.period-bar-outer{width:100%;height:96px;background:var(--bg-raise);
  border:1px solid var(--rule-soft);display:flex;align-items:flex-end;order:2}
.day-bar-inner,.period-bar-inner{width:100%;background:#2f6b45;border-top:2px solid var(--accent)}
.period-link{color:var(--accent);text-decoration:none}

/* session / request log blocks */
.log-block{background:var(--bg-raise);border:1px solid var(--rule-soft);
  border-left:2px solid #2f4a37;padding:11px 13px;margin:0 0 8px}
.log-block.web-block{border-left-color:var(--web-bd)}
.log-block-header{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.log-ts{font-family:var(--mono);font-size:10.5px;color:var(--muted)}
.log-src{font-family:var(--mono);font-size:11.5px;color:var(--accent)}
.log-src.web{color:var(--web)}
.log-msg{font-family:var(--sans);font-size:13.5px;color:var(--body);line-height:1.65;margin-bottom:6px}
.log-detail{font-family:var(--mono);font-size:11px;color:var(--muted);line-height:1.85;
  word-break:break-word}
.log-detail .k{color:var(--muted)}
.log-detail .v{color:var(--body)}

/* indicators */
.ioc-ip{color:var(--alert);font-family:var(--mono)}
.ioc-hash{color:var(--accent);font-family:var(--mono);font-size:11px;word-break:break-all}
.ioc-ua{color:var(--web);font-family:var(--mono);font-size:11px;word-break:break-word}
.mitre-id{color:var(--accent);font-family:var(--mono);font-size:11px}

/* tables */
table{width:100%;border-collapse:collapse;margin:0 0 18px;
  font-family:var(--mono);font-size:11.5px;table-layout:fixed}
th{text-align:left;padding:7px 10px;border:1px solid var(--rule);
  color:var(--muted);font-weight:500;letter-spacing:.05em;background:var(--chrome)}
td{padding:7px 10px;border:1px solid var(--rule-soft);color:var(--body);
  word-break:break-word;vertical-align:top}
tr:nth-child(even) td{background:var(--bg-raise)}

/* callouts */
.callout{border-left:2px solid var(--alert);border-radius:0;background:var(--bg-raise);
  padding:11px 14px;margin:0 0 18px;font-family:var(--sans);font-size:14px;
  color:var(--body);line-height:1.7}
.callout.info{border-left-color:#2f4a37}

/* timeline (session-resumed) */
.timeline{font-family:var(--mono);font-size:11.5px;color:var(--muted);
  border-left:1px solid var(--rule);padding-left:15px;margin:0 0 18px;line-height:2}
.timeline-date{color:var(--muted)}
.timeline-label{color:var(--body)}
.timeline .gap{color:var(--muted)}
.timeline .now{color:var(--accent)}
.timeline .spike,.summary{color:var(--body)}

@media (max-width:620px){
  .day-trend,.period-grid{grid-auto-flow:row;grid-auto-columns:auto}
  .day-bar-outer,.period-bar-outer{height:44px}
  .day-bar-wrap,.period-wrap{flex-direction:row;align-items:center;gap:10px}
  .day-label,.period-label{order:0;min-width:52px;text-align:left}
  .day-val,.period-val{order:2;min-width:46px;text-align:right}
  .day-bar-outer,.period-bar-outer{order:1;align-items:center}
  .day-bar-inner,.period-bar-inner{height:100% !important}
  table{font-size:10.5px}
  th,td{padding:5px 6px}
}
