.site-header[data-astro-cid-3ef6ksr2]{position:sticky;top:0;z-index:1000;border-bottom:1px solid var(--border);background:#0d0e0cf5;backdrop-filter:blur(10px)}.nav[data-astro-cid-3ef6ksr2]{display:flex;min-height:64px;align-items:center;justify-content:space-between;gap:1.5rem}.brand[data-astro-cid-3ef6ksr2]{display:inline-flex;align-items:baseline;gap:.65rem;color:var(--text);text-decoration:none}.brand-mark[data-astro-cid-3ef6ksr2]{font-family:var(--font-mono);font-size:1rem;font-weight:700}.brand-note[data-astro-cid-3ef6ksr2]{color:var(--text-faint);font-family:var(--font-mono);font-size:.72rem}.nav-links[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:.1rem}.nav-link[data-astro-cid-3ef6ksr2]{padding:.35rem .58rem;border:1px solid transparent;border-radius:var(--radius);color:var(--text-muted);font-size:.92rem;font-weight:700;text-decoration:none}.nav-link[data-astro-cid-3ef6ksr2]:hover,.nav-link-active[data-astro-cid-3ef6ksr2]{border-color:var(--border);background:var(--bg-soft);color:var(--text)}.nav-link-active[data-astro-cid-3ef6ksr2]{color:var(--accent-strong)}.nav-link-github[data-astro-cid-3ef6ksr2]{margin-left:.35rem;border-color:var(--border)}.nav-mobile-toggle[data-astro-cid-3ef6ksr2]{display:none;width:42px;min-height:38px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);color:var(--text);cursor:pointer}.nav-mobile-toggle[data-astro-cid-3ef6ksr2] span[data-astro-cid-3ef6ksr2]{display:block;width:18px;height:2px;margin:5px auto;background:currentColor;transition:transform var(--motion)}.nav-mobile-toggle[data-astro-cid-3ef6ksr2][aria-expanded=true] span[data-astro-cid-3ef6ksr2]:first-child{transform:translateY(3.5px) rotate(45deg)}.nav-mobile-toggle[data-astro-cid-3ef6ksr2][aria-expanded=true] span[data-astro-cid-3ef6ksr2]:last-child{transform:translateY(-3.5px) rotate(-45deg)}@media(max-width:780px){.brand-note[data-astro-cid-3ef6ksr2]{display:none}.nav-mobile-toggle[data-astro-cid-3ef6ksr2]{display:block}.nav-links[data-astro-cid-3ef6ksr2]{position:absolute;top:100%;left:0;right:0;display:none;grid-template-columns:1fr;gap:.25rem;padding:.75rem var(--gutter) 1rem;border-bottom:1px solid var(--border);background:var(--bg)}.nav-links[data-astro-cid-3ef6ksr2][aria-hidden=false]{display:grid}.nav-link[data-astro-cid-3ef6ksr2]{padding:.78rem .75rem}.nav-link-github[data-astro-cid-3ef6ksr2]{margin-left:0}}.site-footer[data-astro-cid-sz7xmlte]{margin-top:auto;padding:clamp(2rem,5vw,3.25rem) 0 2rem;border-top:1px solid var(--border);background:var(--bg-soft)}.footer-layout[data-astro-cid-sz7xmlte]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2rem;align-items:start}.footer-brand[data-astro-cid-sz7xmlte]{display:inline-block;margin-bottom:.6rem;color:var(--text);font-family:var(--font-mono);font-weight:700;text-decoration:none}.footer-layout[data-astro-cid-sz7xmlte] p[data-astro-cid-sz7xmlte]{max-width:66ch;margin:0;color:var(--text-muted);font-size:.95rem}.footer-nav[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem .9rem}.footer-nav[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{color:var(--text-muted);font-size:.9rem;font-weight:700;text-decoration:none}.footer-bottom[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;margin-top:2rem;padding-top:1rem;border-top:1px solid var(--border)}.footer-bottom[data-astro-cid-sz7xmlte] p[data-astro-cid-sz7xmlte]{margin:0;color:var(--text-faint);font-family:var(--font-mono);font-size:.76rem}@media(max-width:720px){.footer-layout[data-astro-cid-sz7xmlte]{grid-template-columns:1fr}.footer-nav[data-astro-cid-sz7xmlte]{justify-content:flex-start}}:root{color-scheme:dark;--bg: #0d0e0c;--bg-soft: #12130f;--bg-panel: #171813;--bg-raised: #1d1e18;--bg-code: #090a08;--text: #e3dfd2;--text-soft: #c6c0ae;--text-muted: #8f8a7b;--text-faint: #69665c;--accent: #c8a96a;--accent-strong: #e0c27d;--accent-soft: rgba(200, 169, 106, .12);--steel: #87a6a1;--steel-soft: rgba(135, 166, 161, .13);--border: #2b2c25;--border-strong: #414236;--danger: #cf7b69;--success: #8aa879;--warning: var(--accent);--info: var(--steel);--font-heading: "Newsreader", Georgia, serif;--font-body: "IBM Plex Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;--container: 1180px;--content: 760px;--reading: 720px;--gutter: clamp(1rem, 4vw, 2rem);--section: clamp(2.75rem, 7vw, 5rem);--radius: 4px;--radius-lg: 6px;--motion: .16s ease}*{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth;scroll-padding-top:84px;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{min-height:100vh;margin:0;overflow-x:hidden;background:linear-gradient(90deg,rgba(227,223,210,.035) 1px,transparent 1px) 0 0 / 72px 72px,linear-gradient(rgba(227,223,210,.025) 1px,transparent 1px) 0 0 / 72px 72px,var(--bg);color:var(--text);font-family:var(--font-body);font-size:17px;line-height:1.72}::selection{background:var(--accent);color:var(--bg)}img,svg{max-width:100%}img{height:auto}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.18em;transition:color var(--motion),border-color var(--motion),background-color var(--motion)}a:hover{color:var(--accent-strong)}h1,h2,h3,h4,h5,h6{margin:0;color:var(--text);font-family:var(--font-heading);font-weight:650;line-height:1.12;letter-spacing:0;text-wrap:balance}h1{font-size:clamp(2.45rem,7vw,5.25rem)}h2{font-size:clamp(1.65rem,3.8vw,2.75rem)}h3{font-size:clamp(1.22rem,2.3vw,1.65rem)}p{margin:0 0 1.2rem;color:var(--text-soft)}ul,ol,dl{margin:0}code,kbd,samp,pre,time,.mono,.badge,.tag,.tech-tag,.meta-item,.card-date,.card-meta,.filter-count,.stat-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.container{width:100%;max-width:var(--container);margin:0 auto;padding:0 var(--gutter)}.section{padding:var(--section) 0}.section-header{max-width:760px;margin-bottom:clamp(1.5rem,4vw,2.5rem)}.section-title{margin-bottom:.55rem}.section-subtitle{max-width:68ch;color:var(--text-muted)}.skip-link{position:fixed;top:1rem;left:1rem;z-index:10000;transform:translateY(-150%);padding:.55rem .75rem;border:1px solid var(--accent);border-radius:var(--radius);background:var(--bg);color:var(--accent-strong);font-weight:700}.skip-link:focus-visible{transform:translateY(0)}:focus-visible{outline:2px solid var(--accent-strong);outline-offset:3px}input:focus-visible,button:focus-visible,a:focus-visible{box-shadow:0 0 0 4px #c8a96a29}.button{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:40px;padding:.55rem .82rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:transparent;color:var(--text-soft);cursor:pointer;font-weight:700;line-height:1.2;text-decoration:none;transition:color var(--motion),border-color var(--motion),background-color var(--motion)}.button:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.button-primary{border-color:var(--accent);background:var(--accent);color:var(--bg)}.button-primary:hover{background:var(--accent-strong);color:var(--bg)}.button-secondary,.button-ghost{background:transparent}.text-link{display:inline-flex;width:fit-content;align-items:center;gap:.4rem;color:var(--accent-strong);font-weight:700}.text-link:after{content:"->";font-family:var(--font-mono);font-size:.82em}.badge,.tag,.tech-tag,.pill,.meta-pill,.eyebrow-tag,.focus-tag{display:inline-flex;width:fit-content;align-items:center;gap:.4rem;padding:.16rem .45rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);color:var(--text-muted);font-family:var(--font-mono);font-size:.72rem;font-weight:600;line-height:1.45}.eyebrow-tag,.hero-eyebrow,.meta-pill{color:var(--steel);text-transform:uppercase;letter-spacing:.04em}.surface,.card,.project-card,.detail-card,.profile-card,.status-card,.snapshot-card,.certification-card,.ctf-card,.roadmap-item,.sheet-card,.cve-card,.empty-state{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-panel)}pre{max-width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-code)}pre code{display:block;min-width:max-content;border:0;background:transparent;color:var(--text);font-size:.86rem;line-height:1.58}table{width:100%;border-collapse:collapse}th,td{padding:.65rem .75rem;border-bottom:1px solid var(--border);vertical-align:top;text-align:left}th{color:var(--text);font-family:var(--font-mono);font-size:.78rem;font-weight:700}td{color:var(--text-soft)}.empty-state{padding:clamp(1.35rem,4vw,2rem)}.empty-state h2,.empty-state h3{margin-bottom:.55rem}.empty-state p{max-width:58ch;margin:0;color:var(--text-muted)}.project-detail-page{padding:clamp(1.5rem,5vw,3rem) 0 var(--section)}.project-back-link{margin-bottom:clamp(1.25rem,3vw,2rem)}.project-hero,.project-detail-header,.project-workflow,.project-panel,.project-section-grid>.card{border-top:1px solid var(--border)}.project-hero{padding:clamp(2rem,6vw,4rem) 0}.project-hero .eyebrow{display:block;margin-bottom:.9rem;color:var(--steel);font-family:var(--font-mono);font-size:.78rem;text-transform:uppercase}.project-hero h1{max-width:12ch;margin-bottom:1rem}.project-hero .lead{max-width:66ch;color:var(--text-soft);font-size:clamp(1.08rem,2vw,1.24rem)}.project-hero-actions{margin-top:1.5rem}.project-detail{display:grid;gap:clamp(1.5rem,4vw,2.5rem)}.project-detail-header,.project-workflow,.project-panel,.project-section-grid>.card{padding-top:1.4rem}.project-detail-header .pill{margin-bottom:.8rem}.project-detail-header h2{margin-bottom:.75rem;font-size:clamp(1.45rem,3vw,2.2rem)}.project-overview{max-width:74ch}.project-two-column,.project-section-grid,.project-screenshot-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,3vw,1.5rem)}.project-panel h3,.project-card-heading,.project-workflow h3{margin-bottom:.65rem;font-size:1.25rem}.project-feature-grid{display:grid;gap:.7rem}.project-feature-grid p,.project-panel p{margin:0}.project-stack.expanded,.tech-tags,.project-stack{display:flex;flex-wrap:wrap;gap:.45rem}.project-stack span,.tech-tag{border:1px solid var(--border);border-radius:var(--radius);padding:.18rem .45rem;color:var(--text-muted);background:var(--bg-soft);font-family:var(--font-mono);font-size:.72rem}.project-workflow ol,.project-future-list{display:grid;gap:.55rem;margin:0;padding-left:1.25rem;color:var(--text-soft)}.project-screenshot-grid{margin-bottom:1rem}.project-screenshot{margin:0}.project-screenshot.wide{grid-column:1 / -1}.project-screenshot img{display:block;width:100%;border:1px solid var(--border);background:var(--bg-code)}.project-screenshot figcaption{margin-top:.55rem;color:var(--text-muted);font-size:.88rem;line-height:1.5}@media(max-width:860px){.project-two-column,.project-section-grid,.project-screenshot-grid{grid-template-columns:1fr}}@media(max-width:760px){body{font-size:16px}.section{padding:clamp(2.25rem,9vw,3.5rem) 0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media print{body{background:#fff;color:#000}.site-header,.site-footer,.writeup-sidebar,.skip-link{display:none!important}}.page-wrapper[data-astro-cid-37fxchfa]{min-height:100vh;display:flex;flex-direction:column}.main-content[data-astro-cid-37fxchfa]{flex:1}.main-content[data-astro-cid-37fxchfa]:focus{outline:none}
