:root{--bg-primary: #0c1015;--bg-secondary: #141a21;--bg-card: #1a222c;--bg-card-hover: #242d38;--border: #2d3845;--border-strong: #3d4a5c;--accent: #5eb8c9;--accent-dim: #7ecad8;--accent-muted: rgba(94, 184, 201, .14);--text-primary: #d8dee9;--text-secondary: #8b9aad;--text-muted: #5c677a;--text-heading: #f2f5f9;--success: #3fb950;--warning: #d29922;--grid-opacity: .03;--font-sans: "DM Sans", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, monospace;--radius: 8px;--radius-lg: 12px;--shadow: 0 8px 28px rgba(0, 0, 0, .45);--shadow-sm: 0 2px 12px rgba(0, 0, 0, .35);--transition: .2s ease;--section-gap: 3.25rem}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-gutter:stable}body{margin:0;min-height:100vh;background-color:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-y:scroll}a{color:var(--accent);text-decoration:none;transition:color var(--transition)}a:hover{color:var(--accent-dim)}h1,h2,h3,h4{font-weight:600;line-height:1.25;margin-top:0;color:var(--text-heading);letter-spacing:-.02em}h1{font-size:2.125rem}h2{font-size:1.5rem;margin-bottom:.75rem}h3{font-size:1.2rem}p{margin-top:0;margin-bottom:1rem}p:last-child{margin-bottom:0}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;transition:background var(--transition),border-color var(--transition),box-shadow var(--transition),transform var(--transition)}.card.card--interactive:hover{background:var(--bg-card-hover);border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:translateY(-3px)}.card.card--interactive:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.card.card--settle:hover{transform:none;box-shadow:none;background:var(--bg-card-hover);border-color:color-mix(in srgb,var(--accent) 22%,var(--border))}.project-tile.card.card--interactive:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--border-strong))}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:var(--radius);font-weight:500;transition:background var(--transition),color var(--transition),transform var(--transition);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer}.btn:hover{background:var(--bg-card);border-color:var(--accent);color:var(--accent-dim);transform:translateY(-1px)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--bg-primary)}.btn-primary:hover{background:var(--accent-dim);border-color:var(--accent-dim);color:var(--bg-primary)}.tag{display:inline-block;padding:.28rem .65rem;font-size:.6875rem;font-weight:500;line-height:1.2;letter-spacing:.02em;border-radius:999px;background:var(--accent-muted);border:1px solid color-mix(in srgb,var(--accent) 32%,var(--border));color:var(--accent-dim)}.project-date,time.project-date{font-size:.75rem;font-weight:500;color:var(--text-muted);letter-spacing:.03em}.prose{max-width:65ch}.prose.project-content{max-width:min(52rem,100%)}.prose :global(img){max-width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--border);transition:transform var(--transition),border-color var(--transition)}.prose :global(img:hover){transform:translateY(-1px);border-color:var(--text-muted)}.project-content img{max-width:800px;width:100%;height:auto;display:block;margin:1.5rem auto}.prose :global(pre),.prose :global(code){font-family:var(--font-mono);font-size:.9em}.prose :global(pre){background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;overflow-x:auto}.prose :global(code){background:var(--bg-secondary);padding:.15rem .4rem;border-radius:4px}.prose :global(ul){padding-left:1.5rem}.prose :global(blockquote){border-left:3px solid var(--accent);margin:1rem 0;padding-left:1rem;color:var(--text-secondary)}.prose :global(table){width:100%;border-collapse:collapse;margin:1rem 0 1.5rem;font-size:.9rem;line-height:1.45;background:var(--bg-card);border:1px solid var(--border-strong);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.prose :global(thead){background:var(--bg-secondary)}.prose :global(th){padding:.65rem .85rem;text-align:left;font-weight:600;color:var(--text-heading);border-bottom:1px solid var(--border-strong);letter-spacing:.02em;font-size:.78rem;text-transform:uppercase}.prose :global(td){padding:.6rem .85rem;vertical-align:top;color:var(--text-primary);border-bottom:1px solid var(--border);word-break:break-word}.prose :global(tbody tr:last-child td){border-bottom:none}.prose :global(td:first-child){font-weight:500;color:var(--text-secondary)}.prose :global(tbody tr:nth-child(2n) td){background:#00000029}.prose :global(tbody tr:hover td){background:var(--bg-card-hover)}.project-content h3#indicators-of-compromise{margin-top:0;margin-bottom:.75rem;padding-top:0}.project-content .incident-wrap{border:1px solid var(--border-strong);border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-card)}.project-content .incident-wrap--victim{margin-bottom:48px}.project-content .incident-wrap--ioc{margin-top:0;margin-bottom:1.5rem}.project-content .incident-wrap--decode{margin:1rem 0 1.25rem}.project-content table.incident-table{width:100%;table-layout:fixed;border-collapse:collapse;margin:0;border:none;border-radius:0;box-shadow:none;background:transparent;font-size:.9rem;line-height:1.5}.project-content table.incident-table thead th{padding:14px 16px;text-align:left;font-weight:700;font-size:.8125rem;letter-spacing:.02em;text-transform:none;color:var(--text-heading);background:var(--bg-secondary);border-bottom:2px solid var(--border-strong);border-right:1px solid var(--border);vertical-align:middle}.project-content table.incident-table thead th:last-child{border-right:none}.project-content table.incident-table thead th.incident-table__flow-col{width:2.75rem;padding-left:.35rem;padding-right:.35rem;text-align:center;font-weight:600;color:var(--accent-dim);border-right:1px solid var(--border)}.project-content table.incident-table tbody td{padding:12px 16px;vertical-align:top;border-bottom:1px solid var(--border);border-right:1px solid var(--border);color:var(--text-primary);overflow-wrap:anywhere;word-break:break-word}.project-content table.incident-table tbody td:last-child{border-right:none}.project-content table.incident-table tbody tr:last-child td{border-bottom:none}.project-content table.incident-table tbody tr:nth-child(odd) td{background:var(--bg-card)}.project-content table.incident-table tbody tr:nth-child(2n) td{background:#0003}.project-content table.incident-table tbody tr:hover td{background:var(--bg-card-hover)}.project-content table.incident-table--victim col:first-child{width:12rem}.project-content table.incident-table--victim tbody td:first-child{width:12rem;max-width:12rem;font-weight:600;color:var(--text-secondary);font-family:var(--font-sans);white-space:nowrap}.project-content table.incident-table--victim tbody td:nth-child(2){font-family:var(--font-mono);font-size:.875rem;color:var(--text-primary)}.project-content table.incident-table--ioc col:nth-child(1){width:18%}.project-content table.incident-table--ioc col:nth-child(2){width:24%}.project-content table.incident-table--ioc col:nth-child(3){width:58%}.project-content table.incident-table--ioc tbody td:nth-child(1){font-weight:600;color:var(--text-secondary);font-family:var(--font-sans)}.project-content table.incident-table--ioc tbody td:nth-child(2){font-family:var(--font-mono);font-size:.875rem;color:var(--text-primary)}.project-content table.incident-table--ioc tbody td:nth-child(3){font-family:var(--font-sans);color:var(--text-primary)}.project-content table.incident-table--decode col:nth-child(1){width:42%}.project-content table.incident-table--decode col:nth-child(2){width:2.75rem}.project-content table.incident-table--decode tbody td:first-child{font-family:var(--font-mono);font-size:.8125rem;color:var(--text-primary);vertical-align:middle}.project-content table.incident-table--decode tbody td:first-child code{background:transparent;padding:0;font-size:inherit;word-break:break-all}.project-content table.incident-table--decode tbody td.incident-table__flow-col{width:2.75rem;padding-left:.35rem;padding-right:.35rem;text-align:center;vertical-align:middle;font-size:1rem;font-weight:600;color:var(--accent-dim);font-family:var(--font-sans);border-right:1px solid var(--border)}.project-content table.incident-table--decode tbody td:nth-child(3){font-family:var(--font-sans);font-weight:500;color:var(--text-primary)}.prose :global(.prose-figure--wire-thumb){margin:.5rem auto .85rem;max-width:min(100%,400px);text-align:center}.prose :global(.prose-figure--wire-thumb img){max-width:100%;width:auto;max-height:180px;height:auto;object-fit:contain;vertical-align:middle}.container{width:100%;max-width:1100px;margin:0 auto;padding:0 1.5rem}@media(min-width:768px){.container{padding:0 2rem}h1{font-size:2.375rem}}.reveal{--reveal-delay: 0ms;opacity:0;transform:translateY(10px);filter:blur(.2px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1),filter .6s ease;transition-delay:var(--reveal-delay);will-change:opacity,transform}.reveal.is-visible{opacity:1;transform:translateY(0);filter:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.card.card--interactive:hover,.btn:hover,.prose :global(img:hover){transform:none}.reveal{opacity:1;transform:none;filter:none;transition:none}}.nav[data-astro-cid-dmqpwcec]{position:sticky;top:0;z-index:100;background:#0c1015eb;border-bottom:1px solid var(--border);backdrop-filter:blur(10px)}.nav-inner[data-astro-cid-dmqpwcec]{display:flex;align-items:center;justify-content:space-between;padding-top:.75rem;padding-bottom:.75rem}.nav-brand[data-astro-cid-dmqpwcec]{font-weight:700;font-size:1.25rem;color:var(--text-heading);letter-spacing:-.02em;transition:color var(--transition)}.nav-brand[data-astro-cid-dmqpwcec]:hover{color:var(--accent-dim)}.nav-links[data-astro-cid-dmqpwcec]{display:flex;gap:.5rem;list-style:none;margin:0;padding:0}.nav-link[data-astro-cid-dmqpwcec]{padding:.5rem .75rem;border-radius:var(--radius);color:var(--text-secondary);font-weight:500;position:relative;transition:color var(--transition),background var(--transition)}.nav-link[data-astro-cid-dmqpwcec]:after{content:"";position:absolute;left:.75rem;right:.75rem;bottom:.3rem;height:2px;border-radius:1px;background:var(--accent);opacity:0;transform:scaleX(.35);transition:opacity var(--transition),transform var(--transition)}.nav-link[data-astro-cid-dmqpwcec]:hover{color:var(--text-heading);background:var(--bg-secondary)}.nav-link[data-astro-cid-dmqpwcec]:hover:after{opacity:.55;transform:scaleX(1)}.nav-link[data-astro-cid-dmqpwcec].active{color:var(--accent-dim);background:var(--accent-muted);font-weight:600}.nav-link[data-astro-cid-dmqpwcec].active:after{opacity:1;transform:scaleX(1);background:var(--accent)}@media(max-width:640px){.nav-links[data-astro-cid-dmqpwcec]{gap:.25rem}.nav-link[data-astro-cid-dmqpwcec]{padding:.4rem .5rem;font-size:.9rem}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.footer[data-astro-cid-37fxchfa]{margin-top:2.5rem;border-top:1px solid var(--border-strong);padding:2rem 0 2.5rem;box-shadow:inset 0 1px color-mix(in srgb,var(--accent) 14%,transparent)}.footer-text[data-astro-cid-37fxchfa]{margin:0;font-size:.875rem;color:var(--text-muted)}.layout-body{display:flex;flex-direction:column;min-height:100vh}#starfield{position:fixed;inset:0;width:100%;height:100%;z-index:-1;display:block;background:var(--bg-primary)}main{flex:1;padding:2.75rem 0 5.5rem}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
