/*! tailwindcss v4.3.5 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:block))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:"Manrope", "Segoe UI", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-ink:#0b1014;--color-paper:#edf3ef}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.invert{--tw-invert:invert(100%);filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.filter{filter:var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, )}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}@font-face{font-family:Manrope;font-style:normal;font-weight:400 800;font-display:swap;src:url(/portfolio/assets/manrope-latin-B6Sd7_ZV.woff2)format("woff2")}:root{font-family:var(--font-sans);color:var(--color-paper);background:var(--color-ink);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--line:#293935;--muted:#a8b7b1;--accent:#96e4c3;--blue:#a4c4dc}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:112px}body{min-width:320px;margin:0}button,input{font:inherit}button,a,input,summary{-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}button{color:inherit}a{color:inherit;text-decoration:none}a,button{touch-action:manipulation}p,h1,h2,h3,h4{margin:0}p{text-wrap:pretty}h1,h2,h3,h4{text-wrap:balance}ul{margin:0;padding:0;list-style:none}::selection{color:#0b1014;background:#96e4c3}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}[tabindex="-1"]:focus{outline:none}[id]{scroll-margin-top:112px}.container{width:min(1200px,100% - 96px);margin-inline:auto}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:200;background:var(--accent);color:#0b1014;border-radius:8px;padding:14px 20px;position:fixed;top:12px;left:16px;transform:translateY(-150%)}.skip-link:focus{transform:none}.eyebrow{color:var(--accent);letter-spacing:1.9px;align-items:center;gap:10px;font:500 10px/1.6 Consolas,SFMono-Regular,monospace;display:flex}.eyebrow>span{border:1px solid;flex:none;width:6px;height:6px}.text-link{align-items:center;gap:9px;min-height:44px;font-size:13px;font-weight:700;display:inline-flex}.text-link svg,.button svg{transition:transform .18s}.text-link:hover{color:var(--accent)}.text-link:hover svg,.button:hover svg{transform:translate(2px,-2px)}.button{border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;gap:17px;min-height:52px;padding:0 23px;font-size:13px;font-weight:700;transition:background .18s,border-color .18s;display:inline-flex}.button-primary{color:#0b1913;background:var(--accent)}.button-primary:hover{background:#b3efd5}.button-secondary{background:0 0;border-color:#42584e}.button-secondary:hover{background:#16231e;border-color:#96e4c3}.site-header{z-index:100;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#0b1014f0;border-bottom:1px solid #566e6130;position:sticky;top:0}.header-inner{align-items:center;gap:32px;width:min(1200px,100% - 96px);min-height:84px;margin:auto;display:flex}.brand{flex-shrink:0;align-items:center;gap:13px;display:flex}.brand-mark{letter-spacing:-2.8px;font-size:30px;font-weight:700;line-height:1}.brand-mark>span,.footer-name>span{color:var(--accent)}.brand-name{letter-spacing:.2px;font-size:10px;font-weight:600;line-height:1.4}.desktop-nav{align-items:center;gap:29px;margin-left:auto;display:flex}.desktop-nav a{color:#b4c1ba;padding-block:14px;font-size:12px;font-weight:600;position:relative}.desktop-nav a:hover,.desktop-nav [aria-current=page]{color:var(--accent)}.desktop-nav [aria-current=page]:after{content:"";background:var(--accent);height:1px;position:absolute;bottom:5px;left:0;right:0}.header-contact{border:1px solid #4a6355;border-radius:6px;justify-content:center;align-items:center;gap:16px;min-height:42px;padding-inline:17px;font-size:11px;font-weight:700;display:flex}.header-contact:hover{border-color:var(--accent);color:var(--accent)}.mobile-menu{display:none;position:relative}.mobile-menu summary{border:1px solid #42584e;border-radius:7px;place-items:center;width:44px;height:44px;list-style:none;display:grid}.mobile-menu summary::-webkit-details-marker{display:none}.menu-close-icon,.mobile-menu[open] .menu-open-icon{display:none}.mobile-menu[open] .menu-close-icon{display:block}.mobile-nav{background:#131e20;border:1px solid #42584e;border-radius:9px;width:260px;padding:12px;animation:.17s both dropdown-in;position:absolute;top:57px;right:0;box-shadow:0 18px 70px #0007}.mobile-nav a{border-radius:5px;justify-content:space-between;align-items:center;padding:15px 12px;font-size:14px;display:flex}.mobile-nav a:hover,.mobile-nav [aria-current=page]{color:var(--accent);background:#1c2e25}.hero{grid-template-columns:minmax(0,1.22fr) minmax(0,.88fr);align-items:center;gap:28px;min-height:670px;padding-block:77px 102px;display:grid;position:relative}.hero:before{content:"";pointer-events:none;z-index:-1;background:radial-gradient(at 75% 40%,#30594224,#0000 58%);position:absolute;inset:-30px 0 20px 35%}.hero h1{letter-spacing:-.067em;margin-top:24px;font-size:clamp(60px,6.1vw,82px);font-weight:600;line-height:1.065}.hero h1>span{color:#c4d2c9}.name-period{color:var(--accent)}.hero-role{color:#d2ded6;max-width:540px;margin-top:23px;font-size:16px;font-weight:600;line-height:1.8}.role-divider{color:#6f9481;padding-inline:7px}.hero-intro{max-width:465px;color:var(--muted);margin-top:19px;font-size:14px;line-height:1.95}.hero-actions{flex-wrap:wrap;gap:13px;margin-top:29px;display:flex}.hero-github{color:#afc1b7;align-items:center;gap:9px;min-height:44px;margin-top:20px;font-size:11px;display:inline-flex}.hero-github:hover{color:var(--accent)}.small-arrow{opacity:.8;margin-left:7px}.hero-scroll{letter-spacing:1.5px;color:#9dafaa;align-items:center;gap:10px;min-height:44px;font:10px Consolas,monospace;display:inline-flex;position:absolute;bottom:30px;left:0}.hero-scroll:hover{color:var(--accent)}.github-mark{flex:none}.practice-graphic{justify-self:end;width:100%;max-width:440px;height:400px;position:relative}.graphic-caption{text-align:center;color:#b0c5b8;letter-spacing:1.7px;font:9px/1.8 Consolas,monospace;position:absolute;top:15px;left:0;right:0}.graphic-caption>span{color:var(--accent);padding-inline:9px}.practice-lines{width:100%;height:100%;position:absolute;inset:0}.graphic-core{text-align:center;background:radial-gradient(circle,#22392b,#101b1c);border:1px solid #3e5d4b;border-radius:50%;place-content:center;gap:9px;width:120px;height:120px;display:grid;position:absolute;top:51%;left:50%;transform:translate(-50%,-50%)}.graphic-core>span:first-child{letter-spacing:-3px;font-size:39px;font-weight:600;line-height:1}.graphic-core>span:first-child>span{color:var(--accent)}.core-caption{color:#b9cbbf;font-size:8px}.practice-node{background:#15231eee;border:1px solid #3c5648;border-radius:7px;align-items:center;gap:11px;padding:13px 15px;display:flex;position:absolute;box-shadow:0 10px 30px #0002}.build-node{top:23%;left:0}.test-node{background:#15232aee;border-color:#405661;top:42%;right:0}.secure-node{bottom:16%;left:13%}.node-icon{width:33px;height:33px;color:var(--accent);background:#1c3124;border:1px solid #3b5b47;border-radius:6px;flex:none;place-items:center;display:grid}.node-icon.blue{color:var(--blue);background:#21313c;border-color:#405b6a}.node-step{color:#abc5b4;letter-spacing:.9px;font:8px/1.8 Consolas,monospace;display:block}.practice-node strong{color:#d4e3d8;margin-top:5px;font-size:10px;font-weight:600;display:block}.graphic-footnote{text-align:center;color:#a8bcb0;font-size:10px;position:absolute;bottom:8px;left:0;right:0}.section{padding-block:96px}.section-heading{justify-content:space-between;align-items:flex-end;gap:38px;margin-bottom:37px;display:flex}.section-heading h2,.about-copy h2{letter-spacing:-.045em;margin-top:16px;font-size:clamp(30px,3.25vw,43px);font-weight:500;line-height:1.2}.section-intro{max-width:655px;color:var(--muted);margin-top:18px;font-size:14px;line-height:1.95}.section-action{flex-shrink:0;padding-bottom:2px}.about-section{border-top:1px solid var(--line);position:relative}.about-grid{grid-template-columns:1fr 1fr;gap:90px;display:grid}.about-copy h2{margin-bottom:25px;line-height:1.27}.about-copy h2>span{color:#b1c8ba}.about-copy>p:not(.eyebrow){max-width:500px;color:var(--muted);font-size:14px;line-height:2}.location-label{color:#b4c3ba;align-items:center;gap:8px;margin-top:21px;font-size:12px;display:inline-flex}.about-principle{align-items:flex-start;gap:13px;max-width:400px;margin-top:26px;display:flex}.about-principle>span{background:var(--accent);opacity:.7;flex:none;width:1px;height:35px;margin-top:2px}.about-principle>p{color:#c3d1c7;font-size:12px;line-height:1.9}.education-list{align-content:start;gap:18px;display:grid}.education-card{border:1px solid var(--line);background:linear-gradient(130deg,#14201c,#0f171a);border-radius:9px;gap:20px;padding:24px 25px;display:flex}.education-icon{width:43px;height:43px;color:var(--accent);border:1px solid #395242;border-radius:9px;flex:none;place-items:center;display:grid}.study-status{letter-spacing:1.3px;color:var(--accent);margin-top:2px;margin-bottom:9px;font:9px Consolas,monospace;display:block}.education-card h3{letter-spacing:-.4px;font-size:17px;font-weight:600;line-height:1.6}.education-card p:not(.study-topics){color:#b4c8bb;margin-top:5px;font-size:13px}.education-detail{color:#b0bdb6;margin-top:10px;font-size:12px;display:block}.study-topics{color:#adbbb3;max-width:350px;margin-top:13px;font-size:12px;line-height:1.95}.expertise-grid{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));margin-top:52px;padding-top:31px;display:grid}.expertise-item{padding-left:34px;position:relative}.expertise-item+.expertise-item{border-left:1px solid var(--line);padding-left:59px}.expertise-item>svg{color:var(--accent);position:absolute;top:1px;left:0}.expertise-item+.expertise-item>svg{left:25px}.expertise-item h3{margin-bottom:11px;font-size:13px;font-weight:600}.expertise-item p{color:#afbfb6;font-size:12px;line-height:1.95}.projects-section{background:#0e1619;border-block:1px solid #243532}.project-card{background:#111b1e;border:1px solid #30413b;border-radius:10px;position:relative}.featured-project{background:linear-gradient(115deg,#14211e,#10181c 72%);grid-template-columns:1.4fr 1fr;gap:54px;padding:35px 38px;display:grid}.project-card-top{align-items:center;gap:14px;min-height:24px;display:flex}.project-index{color:#a1b9ab;font:12px Consolas,monospace}.featured-badge{color:#b2ebce;letter-spacing:1px;background:#244331;border:1px solid #44684d;border-radius:3px;padding:4px 8px;font:8px/1.4 Consolas,monospace}.project-category{color:#a3b7ad;letter-spacing:1.2px;margin-left:auto;font:9px Consolas,monospace}.featured-project h3{letter-spacing:-1px;margin-top:23px;font-size:34px;font-weight:500;line-height:1.3}.project-narrative{margin-top:22px}.narrative-label{color:#a9c6b6;letter-spacing:1.3px;font:9px Consolas,monospace}.project-narrative>p:not(.narrative-label){color:#b9c9bf;margin-top:7px;font-size:14px;line-height:1.95}.implementation-list{grid-template-columns:1fr 1fr;gap:9px 15px;margin-top:23px;display:grid}.implementation-list li{color:#c3d2c8;align-items:baseline;gap:8px;font-size:12px;line-height:1.7;display:flex}.implementation-list li>span{background:var(--accent);flex:none;width:4px;height:4px}.technology-tags{flex-wrap:wrap;gap:6px;margin-top:24px;display:flex}.technology-tags li{color:#bcd0c2;background:#19271e66;border:1px solid #344a3e;border-radius:4px;padding:5px 8px;font:11px/1.55 Consolas,monospace}.project-links{flex-wrap:wrap;align-items:center;gap:10px 24px;margin-top:18px;display:flex}.project-source{color:var(--accent)}.project-demo{color:#c3d8e7}.architecture{background:#0e171a;border:1px solid #293f35;border-radius:8px;align-self:center;padding:24px}.architecture figcaption{letter-spacing:1.5px;color:#abc4b5;align-items:center;gap:8px;margin-bottom:27px;font:8px Consolas,monospace;display:flex}.architecture-dot{background:var(--accent);border-radius:50%;width:5px;height:5px;display:block}.architecture-clients{grid-template-columns:1fr 1fr;gap:12px;display:grid}.architecture-node{text-align:center;background:#17281f;border:1px solid #364f43;border-radius:6px;flex-direction:column;align-items:center;gap:9px;padding:18px 8px;display:flex}.architecture-node>svg{color:#b3d8c4}.architecture-node strong{font-size:11px;font-weight:600;display:block}.architecture-node span:not(.node-side-label){color:#abc2b3;font-size:11px;line-height:1.6;display:block}.architecture-connector{border-bottom:1px solid #4b7760;border-left:1px solid #4b7760;border-right:1px solid #4b7760;border-radius:0 0 4px 4px;width:50%;height:33px;margin:auto;position:relative}.architecture-connector:after{content:"";background:#4b7760;width:1px;height:15px;position:absolute;top:100%;left:50%}.api-node,.database-node{text-align:left;flex-direction:row;gap:14px;padding:15px}.api-node{background:#1c2d2d;border-color:#4b645d;margin-top:15px}.api-node strong,.database-node strong{margin-bottom:4px;font-size:11px}.node-side-label{color:#c3dcd0;background:#293f36;border-radius:3px;margin-left:auto;padding:4px 6px;font:8px Consolas,monospace}.architecture-connector.single{border:0;height:25px}.architecture-connector.single:after{height:25px;top:0}.database-node{background:#151f28;border-color:#344959}.database-node>svg{color:var(--blue)}.architecture-shared{color:#afc9b7;justify-content:center;align-items:center;gap:8px;margin-top:20px;font-size:11px;display:flex}.secondary-project-grid{grid-template-columns:1fr 1fr;gap:22px;margin-top:22px;display:grid}.secondary-project{flex-direction:column;padding:29px 31px;display:flex}.secondary-project .project-card-top>svg{color:#8cae9b;margin-left:7px}.project-title-row{flex-wrap:wrap;align-items:center;gap:15px;margin-top:22px;display:flex}.project-title-row h3{letter-spacing:-.8px;font-size:25px;font-weight:500}.project-label{color:#aebfb5;border-left:1px solid #425e4a;padding-left:13px;font-size:11px}.secondary-project .project-links{margin-top:auto;padding-top:21px}.secondary-project .technology-tags{margin-bottom:7px}.secondary-project .project-narrative{margin-top:20px}.security-section{position:relative}.security-areas{border-block:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:36px;padding-block:31px;display:grid}.security-area-icon{width:44px;height:44px;color:var(--accent);background:#17241c;border:1px solid #304e3c;border-radius:8px;place-items:center;display:inline-grid}.security-areas h3{letter-spacing:-.3px;margin-block:17px 11px;font-size:16px;font-weight:600}.security-areas p{color:var(--muted);max-width:315px;font-size:14px;line-height:1.95}.ctf-heading{align-items:center;gap:10px;margin-block:34px 19px;display:flex}.ctf-heading>svg{color:#bbdabf}.ctf-heading h3{font-size:13px;font-weight:600}.ctf-heading>span{color:#a1b5aa;letter-spacing:1.4px;margin-left:auto;font:8px Consolas,monospace}.ctf-grid{grid-template-columns:.92fr 1.08fr;gap:23px;display:grid}.ctf-card{background:#121c1e;border:1px solid #2e4539;border-radius:8px;padding:29px;position:relative}.ctf-kicker{color:#b1c5b8;letter-spacing:1.5px;font:9px Consolas,monospace;display:block}.ctf-card h4{letter-spacing:-.5px;font-size:18px;font-weight:600;line-height:1.6}.ctf-card p{color:#b3c4b8;max-width:360px;margin-top:12px;font-size:14px;line-height:1.95}.ctf-type{color:#b3ccba;margin-top:18px;font-size:12px;display:block}.ctf-rank{float:left;color:#bde8c5;letter-spacing:-6px;margin-top:27px;margin-right:26px;font-size:78px;font-weight:500;line-height:1}.ctf-rank>span{letter-spacing:-1px;margin-left:4px;font-size:25px}.national-ctf h4{margin-top:28px}.national-ctf p{font-size:14px}.national-ctf .ctf-type{margin-top:16px;margin-left:102px}.htb-ctf{background:linear-gradient(115deg,#15281f,#121c1e 70%)}.htb-ctf h4{margin-top:18px;font-size:22px}.htb-ctf .ctf-type{margin-top:12px;display:inline-block}.htb-ctf .text-link{width:fit-content;color:var(--accent);margin-top:8px;font-size:12px;display:flex}.credentials-section{border-top:1px solid var(--line);background:#0d1518}.credential-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:21px;display:grid}.featured-credential-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.credential-card{background:#121d20;border:1px solid #2d4239;border-radius:8px;flex-direction:column;min-width:0;padding:25px;scroll-margin-top:114px;display:flex}.featured-credential{background:linear-gradient(130deg,#17251e,#101a1e)}.credential-top{justify-content:space-between;align-items:center;gap:13px;display:flex}.credential-icon{color:#b0d8c0;background:#1a2a20;border:1px solid #3c5543;border-radius:7px;place-items:center;width:42px;height:42px;display:grid}.credential-feature-label{color:#c0dac6;letter-spacing:1.5px;font:8px Consolas,monospace}.credential-issuer{color:#aac0b1;margin-top:22px;margin-bottom:9px;font-size:12px;line-height:1.85}.credential-card h3{letter-spacing:-.5px;font-size:18px;font-weight:600;line-height:1.55}.award-label{color:#bdd3c3;border:1px solid #405743;border-radius:4px;width:fit-content;margin-top:16px;padding:5px 8px;font-size:11px;line-height:1.5}.credential-dates{min-height:46px;margin-block:17px 11px}.credential-dates p{color:#b4c5b9;align-items:flex-start;gap:7px;font-size:12px;line-height:1.75;display:flex}.credential-dates svg{flex:none;margin-top:2px}.credential-dates .expiry-date{color:#a8bbac;margin-top:4px;padding-left:21px;font-size:11px}.credential-details{border-top:1px solid #31493b;margin-top:auto}.credential-details summary{color:#bbd3c3;justify-content:space-between;align-items:center;gap:15px;min-height:45px;font-size:12px;list-style:none;display:flex}.credential-details summary::-webkit-details-marker{display:none}.credential-details summary:hover{color:var(--accent)}.credential-details[open] summary svg{transform:rotate(180deg)}.credential-details>p{color:#b0c1b4;padding-top:7px;font-size:14px;line-height:1.95}.credential-topics{flex-wrap:wrap;gap:8px;margin-top:13px;padding-bottom:5px;display:flex}.credential-topics li{color:#abc5b2;background:#1b2e23;border-radius:3px;padding:4px 7px;font-size:11px;line-height:1.6}.certificate-view-link{color:var(--accent);align-self:flex-start;margin-top:12px;font-size:12px}html:has(.certificate-viewer[open]){overflow:hidden}.certificate-viewer{width:min(1080px,100% - 32px);max-width:none;max-height:calc(100dvh - 40px);color:var(--color-paper);background:#111b1f;border:1px solid #486252;border-radius:12px;margin:auto;padding:0;box-shadow:0 25px 90px #0009}.certificate-viewer[open]{flex-direction:column;display:flex}.certificate-viewer::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#040a0ddb}.certificate-viewer-header{justify-content:space-between;align-items:flex-start;gap:20px;padding:22px 24px 16px;display:flex}.certificate-viewer-header>div{min-width:0}.certificate-preview-kicker{color:var(--accent);letter-spacing:1.6px;font:9px/1.5 Consolas,monospace}.certificate-viewer h2{letter-spacing:-.5px;margin-top:8px;font-size:22px;font-weight:600;line-height:1.45}.certificate-preview-issuer{color:#b8cbc0;margin-top:7px;font-size:12px;line-height:1.7}.certificate-close{color:#d3e4da;background:#1a2923;border:1px solid #466050;border-radius:7px;flex:none;place-items:center;width:44px;height:44px;padding:0;display:grid}.certificate-close:hover{color:var(--accent);border-color:var(--accent)}.certificate-viewer-toolbar{flex-wrap:wrap;align-items:center;gap:10px;padding:0 24px 12px;display:flex}.certificate-viewer-toolbar .button{gap:9px;min-height:44px;padding-inline:15px;font-size:12px}.certificate-viewer-toolbar button:disabled{opacity:.55;cursor:default}.certificate-copy-note{color:#b5c7bc;padding:0 24px 17px;font-size:11px;line-height:1.75}.certificate-preview-pages{overscroll-behavior:contain;background:#d9dfdc;min-height:0;padding:20px;overflow:auto}.certificate-preview-pages:focus-visible{outline-offset:-4px;outline:2px solid #205e41}.certificate-preview-pages img{background:#fff;width:auto;max-width:100%;height:auto;max-height:calc(100dvh - 300px);margin-inline:auto;display:block}.certificate-preview-pages img+img{margin-top:20px}.certificate-preview-pages.is-zoomed img{width:max(100%,1400px);max-width:none;max-height:none}.certificate-preview-error{color:#173624;text-align:center;padding:35px 15px;font-size:14px;line-height:1.9}@media (width<=600px){.certificate-viewer{width:calc(100% - 20px);max-height:calc(100dvh - 20px)}.certificate-viewer-header{gap:10px;padding:16px 15px 14px}.certificate-viewer h2{font-size:18px}.certificate-viewer-toolbar{gap:8px;padding-inline:15px}.certificate-viewer-toolbar .button{padding-inline:11px;font-size:11px}.certificate-copy-note{padding-inline:15px}.certificate-preview-pages{padding:10px}}.credential-collection-link{color:#b4c9ba;border-bottom:1px solid #2c4237;justify-content:space-between;align-items:center;gap:20px;min-height:48px;margin-top:25px;padding-block:13px;font-size:12px;display:flex}.credential-collection-link:hover{color:var(--accent)}.contact-section{background:radial-gradient(at 25% 90%,#20362a40,#0000 60%),#0c1316;border-top:1px solid #2e4338;padding-block:86px}.contact-inner{grid-template-columns:1fr 1fr;align-items:center;gap:90px;display:grid}.contact-inner h2{letter-spacing:-2px;margin-top:16px;font-size:48px;font-weight:500;line-height:1.2}.contact-inner h2>span{color:var(--accent)}.contact-intro{color:#adc1b2;max-width:350px;margin-top:20px;font-size:14px;line-height:1.95}.contact-links{gap:21px;display:grid}.contact-email{border-block:1px solid #395343;padding:23px 0;display:block}.contact-link-label{letter-spacing:1.5px;color:#b8cdbc;align-items:center;gap:8px;margin-bottom:14px;font:9px Consolas,monospace;display:flex}.contact-email>span:last-child{letter-spacing:-.7px;color:#cbe5d1;overflow-wrap:anywhere;justify-content:space-between;align-items:center;gap:15px;font-size:clamp(16px,2.15vw,25px);font-weight:500;display:flex}.contact-email:hover{color:var(--accent);border-color:#96e4c3}.contact-github{align-items:center;gap:13px;min-height:60px;padding:12px 0;display:flex}.contact-github>svg:first-child{color:#b9d4c1}.contact-github>span{color:#a8beae;font-size:12px}.contact-github strong{color:#d0ded4;margin-top:4px;font-size:12px;font-weight:500;display:block}.contact-github>svg:last-child{color:#b0cdb9;margin-left:auto}.contact-github:hover strong{color:var(--accent)}.site-footer{background:#0a1113;border-top:1px solid #263b30;padding-block:33px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:22px 35px;display:flex}.footer-name{letter-spacing:-.2px;font-size:13px;font-weight:600}.footer-inner>div>p{color:#aabdb0;margin-top:8px;font-size:12px}.footer-links{align-items:center;gap:21px;display:flex}.footer-links a{color:#b5cbbb;align-items:center;gap:8px;min-height:44px;font-size:12px;display:inline-flex}.footer-links a:hover{color:var(--accent)}.external-marker{transform:rotate(45deg)}.back-top{border-left:1px solid #334638;padding-left:18px}.copyright{color:#9db1a3;letter-spacing:.2px;flex-basis:100%;padding-top:6px;font-size:11px}.credentials-page-header{padding-top:41px;padding-bottom:43px}.back-link{color:#b1c6b6;align-items:center;gap:9px;min-height:44px;margin-bottom:30px;font-size:12px;display:inline-flex}.back-link:hover{color:var(--accent)}.credentials-page-header h1{letter-spacing:-.06em;margin-top:17px;font-size:clamp(42px,5.25vw,72px);font-weight:500;line-height:1.12}.credentials-page-header h1>span{color:#afcbbb}.credentials-page-intro{max-width:665px;color:var(--muted);margin-top:24px;font-size:14px;line-height:1.95}.credentials-page-note{align-items:flex-start;gap:11px;max-width:610px;margin-top:24px;display:flex}.credentials-page-note>span{background:var(--accent);flex:none;width:4px;height:4px;margin-top:7px}.credentials-page-note>p{color:#b8cbbf;font-size:12px;line-height:1.9}.credential-collection{padding-bottom:85px}.no-js-note{color:var(--muted);margin-block:12px 24px;font-size:14px;line-height:1.9}html.js-ready .no-js-note,html:not(.js-ready) :is(.credential-search-form,.category-filters,.credential-results-bar){display:none}.credential-search-form{border-top:1px solid #314a3d;align-items:center;gap:26px;padding-block:24px;display:flex}.credential-search{background:#131e20;border:1px solid #526b5e;border-radius:7px;align-items:center;width:min(680px,100%);min-width:0;display:flex;position:relative}.credential-search:focus-within{border-color:var(--accent);outline:1px solid var(--accent)}.credential-search>svg{color:#b4cfbe;flex:none;margin-left:17px}.credential-search input{color:#e1eee4;background:0 0;border:0;width:100%;min-width:0;min-height:54px;padding:16px 15px;font-size:14px}.credential-search input::placeholder{color:#a2b8aa;opacity:1}.credential-search input:focus{outline:none}.credential-search input::-webkit-search-cancel-button{display:none}.credential-search button{flex:none;place-items:center;width:44px;height:44px;margin-right:5px;display:grid}.featured-filter{color:#b9cdbd;cursor:pointer;white-space:nowrap;align-items:center;gap:9px;min-height:44px;font-size:12px;display:inline-flex}.featured-filter input{width:17px;height:17px;accent-color:var(--accent)}.category-filters{flex-wrap:wrap;gap:8px;display:flex}.category-filters button{color:#b6cbbd;background:#101b1b;border:1px solid #425a4d;border-radius:5px;min-height:42px;padding:8px 14px;font-size:11px;line-height:1.7;transition:background .15s}.category-filters button:hover{color:var(--accent);border-color:#6d9e81}.category-filters [aria-pressed=true]{color:#d4ead8;background:#264233;border-color:#769a7d}.credential-results-bar{justify-content:space-between;align-items:center;gap:20px;min-height:63px;margin-bottom:5px;padding-top:8px;display:flex}.credential-results-bar>p{color:#b0c4b6;font-size:12px}.credential-results-bar strong{color:#d5e8d8;font-weight:600}.reset-filters{min-height:44px;color:var(--accent);justify-content:center;align-items:center;gap:8px;font-size:12px;display:inline-flex}.all-credentials .credential-card{min-height:328px}.credential-empty{text-align:center;background:#101c19;border:1px dashed #47624f;border-radius:8px;place-items:center;padding:80px 20px;display:grid}.credential-empty>svg{color:#96e4c3;margin-bottom:20px}.credential-empty h3{letter-spacing:-.8px;font-size:23px;font-weight:500}.credential-empty p{color:#acc3b2;margin-block:15px 24px;font-size:14px;line-height:1.8}@keyframes dropdown-in{0%{opacity:.4;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media (width>=1440px){.hero{min-height:725px;padding-block:96px 117px}.hero h1{font-size:88px}}@media (width<=1100px){.container,.header-inner{width:calc(100% - 64px)}.hero{grid-template-columns:1.2fr .8fr;gap:12px;min-height:620px}.hero h1{font-size:64px}.test-node{top:23%}.about-grid{gap:45px}.featured-project{grid-template-columns:1.2fr 1fr;gap:30px;padding:29px}.project-category{letter-spacing:.6px;font-size:8px}.architecture{padding:18px}.credential-card{padding:22px}.contact-inner{gap:65px}}@media (width<=900px){.hero{grid-template-columns:1fr;min-height:580px;padding-block:63px 98px}.hero h1{font-size:72px}.hero-intro{max-width:580px}.hero:before{inset:0 0 0 35%}.practice-graphic{display:none}.about-grid{gap:35px}.education-card{gap:13px;padding:20px}.education-icon{width:36px;height:36px}.education-card h3{font-size:15px}.about-copy h2{font-size:30px}.featured-project{grid-template-columns:1fr}.architecture{justify-self:center;width:100%;max-width:480px;margin-block:15px 2px}.architecture-clients .architecture-node{padding:18px}.implementation-list{max-width:600px}.credential-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.security-areas{gap:25px}.contact-inner{gap:40px}.contact-inner h2{font-size:40px}}@media (width<=700px){html{scroll-padding-top:95px}[id],.credential-card{scroll-margin-top:95px}.container,.header-inner{width:calc(100% - 48px)}.header-inner{gap:13px;min-height:72px}.brand-name{font-size:9px}.desktop-nav{display:none}.header-contact{min-height:40px;margin-left:auto;padding-inline:13px;font-size:10px}.header-contact>svg{display:none}.mobile-menu{display:block}.hero{min-height:auto;padding-block:52px 84px}.hero h1{margin-top:23px;font-size:clamp(48px,9.8vw,65px);line-height:1.1}.hero-role{max-width:360px;margin-top:20px;font-size:13px}.hero .eyebrow{letter-spacing:1.25px;gap:8px;font-size:8px}.hero-intro{max-width:480px;margin-top:16px;font-size:14px;line-height:1.95}.hero-actions{gap:10px;margin-top:25px}.button{gap:14px;min-height:50px;padding-inline:19px;font-size:12px}.hero-github{margin-top:15px;font-size:10px}.hero-scroll{font-size:8px;bottom:14px}.section{padding-block:67px}.section-heading{flex-direction:column;align-items:flex-start;gap:15px;margin-bottom:27px}.section-heading h2,.about-copy h2{font-size:32px;line-height:1.3}.section-intro{margin-top:15px;font-size:14px}.section-action{margin-top:-1px}.about-grid{grid-template-columns:1fr;gap:34px}.about-copy>p:not(.eyebrow){font-size:14px}.about-copy h2{margin-bottom:20px}.education-card{gap:17px;padding:23px 20px}.education-card h3{font-size:16px}.expertise-grid{grid-template-columns:1fr;gap:24px;margin-top:35px;padding-top:25px}.expertise-item+.expertise-item{border:0;padding-left:34px}.expertise-item+.expertise-item>svg{left:0}.expertise-item h3{margin-bottom:7px}.expertise-item p{font-size:12px}.featured-project{gap:24px;padding:24px 21px}.featured-project .project-card-top{flex-wrap:wrap;gap:11px}.featured-project .project-category{flex-basis:100%;margin-top:3px;margin-left:0}.featured-project h3{margin-top:20px;font-size:29px}.project-narrative>p:not(.narrative-label){font-size:14px}.implementation-list{grid-template-columns:1fr;gap:7px;margin-top:20px}.implementation-list li{font-size:12px}.technology-tags{margin-top:19px}.architecture{margin-top:0;padding:18px 14px}.architecture-node span:not(.node-side-label){font-size:11px}.architecture-clients{gap:8px}.architecture-clients .architecture-node{padding:17px 6px}.secondary-project-grid{grid-template-columns:1fr;gap:17px;margin-top:17px}.secondary-project{padding:25px 22px}.project-title-row{gap:13px}.project-title-row h3{font-size:24px}.project-category{letter-spacing:.75px;font-size:8px}.security-areas{grid-template-columns:1fr;gap:28px;padding-block:27px}.security-areas>article{grid-template-columns:42px 1fr;column-gap:16px;display:grid}.security-area-icon{grid-row:span 2;width:42px;height:42px}.security-areas h3{margin-top:0;margin-bottom:6px;font-size:15px}.security-areas p{max-width:none;font-size:14px}.ctf-heading{margin-top:27px}.ctf-heading>span{display:none}.ctf-grid{grid-template-columns:1fr;gap:17px}.ctf-card{padding:25px}.ctf-kicker{font-size:8px}.national-ctf .ctf-type{clear:both;margin-left:0;padding-top:8px}.credential-grid{grid-template-columns:1fr;gap:17px}.credential-card{padding:24px}.credential-card h3{font-size:18px}.credential-collection-link{font-size:12px;line-height:1.8}.contact-section{padding-block:66px}.contact-inner{grid-template-columns:1fr;gap:32px}.contact-inner h2{font-size:40px;line-height:1.25}.contact-intro{font-size:14px}.contact-email>span:last-child{font-size:23px}.footer-inner{align-items:flex-start;gap:17px}.footer-links{flex-wrap:wrap;gap:18px}.footer-links a{font-size:12px}.copyright{padding-top:5px}.credentials-page-header{padding-top:23px;padding-bottom:30px}.back-link{margin-bottom:22px}.credentials-page-header h1{font-size:clamp(39px,8.4vw,58px);line-height:1.2}.credentials-page-intro{margin-top:19px;font-size:14px}.credentials-page-note>p{font-size:12px}.credential-search-form{flex-direction:column;align-items:flex-start;gap:5px;padding-block:22px 12px}.credential-search{width:100%}.credential-search input{padding-inline:11px;font-size:14px}.credential-search>svg{width:17px;margin-left:13px}.category-filters{gap:7px}.category-filters button{min-height:44px;padding-inline:11px;font-size:11px}.credential-results-bar{min-height:66px}.credential-results-bar>p,.reset-filters{font-size:12px}.all-credentials .credential-card{min-height:308px}.credential-collection{padding-bottom:60px}}@media (width<=370px){.container,.header-inner{width:calc(100% - 36px)}.brand-name{display:none}.hero h1{font-size:47px}.hero .eyebrow{letter-spacing:.85px;font-size:7px}.hero-role{font-size:12px}.button{gap:10px;padding-inline:15px;font-size:11px}.section-heading h2,.about-copy h2{font-size:29px}.education-card{gap:11px;padding-inline:16px}.education-icon{width:32px;height:36px}.education-card h3{font-size:15px}.featured-project,.secondary-project{padding-inline:18px}.project-title-row{gap:9px}.project-title-row h3{font-size:23px}.project-label{padding-left:9px;font-size:11px}.architecture{padding-inline:12px}.credential-card{padding:21px}.credentials-page-header h1{font-size:38px}.contact-email>span:last-child{font-size:20px}.contact-email>span:last-child>svg{flex-shrink:0;width:19px}}.writeups-section{border-top:1px solid var(--line);background:#0e1719}.writeups-event{color:#c1d5c7;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:25px;font-size:12px;line-height:1.8;display:flex}.writeups-event>svg{color:var(--accent);flex:none}.writeups-event time{color:#a6bbaf;border-left:1px solid #405648;margin-left:5px;padding-left:16px}.writeup-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;display:grid}.writeup-card{background:linear-gradient(145deg,#14201e,#10191c);border:1px solid #334b3f;border-radius:9px;flex-direction:column;min-width:0;padding:27px;transition:border-color .18s,background .18s;display:flex;position:relative}.writeup-card:hover,.writeup-card:focus-within{background:#17251f;border-color:#83b798}.writeup-card-meta{color:#b6d4c0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;font:10px/1.8 Consolas,monospace;display:flex}.writeup-card-meta>span:first-child{border-left:2px solid #96e4c3;padding-left:10px}.category-binary .writeup-card-meta>span:first-child,.category-reversing .writeup-card-meta>span:first-child{border-color:#a4c4dc}.category-forensics .writeup-card-meta>span:first-child,.category-misc .writeup-card-meta>span:first-child{border-color:#d4c6a2}.writeup-card h3{letter-spacing:-.7px;margin-top:22px;font-size:22px;font-weight:600;line-height:1.45}.writeup-card-link{justify-content:space-between;align-items:flex-start;gap:13px;display:flex}.writeup-card-link:after{content:"";border-radius:9px;position:absolute;inset:0}.writeup-card-link>svg{color:#b9d0bf;flex:none;margin-top:4px}.writeup-card>p{color:var(--muted);flex-grow:1;margin-top:15px;font-size:13px;line-height:1.9}.writeup-topics{flex-wrap:wrap;gap:7px;margin-top:24px;display:flex}.writeup-topics li{color:#bcd0c2;border:1px solid #3c5547;border-radius:4px;padding:4px 8px;font-size:10px;line-height:1.7}.writeup-read{color:#c8e5d1;border-top:1px solid #304638;justify-content:space-between;align-items:center;margin-top:24px;padding-top:18px;font-size:12px;font-weight:600;display:flex}.writeup-read>span{font-size:18px;line-height:1}.writeups-page-header{padding-block:41px 34px}.writeups-page-header h1{letter-spacing:-.055em;margin-top:17px;font-size:clamp(42px,4.8vw,66px);font-weight:500;line-height:1.18}.writeups-page-header h1>span{color:#afcbbb}.writeups-page-intro{max-width:740px;color:var(--muted);margin-top:24px;font-size:14px;line-height:1.95}.writeups-page-header .writeups-event{margin-top:26px;margin-bottom:0}.writeup-collection{padding-bottom:85px}.writeup-search-form{border-top:1px solid #314a3d;justify-content:space-between;align-items:center;gap:24px;padding-block:24px;display:flex}.collection-count{color:#b7cdbd;font-size:12px}.writeup-results-bar{justify-content:space-between;align-items:center;gap:20px;min-height:69px;margin-bottom:8px;display:flex}.writeup-results-bar p{color:#b0c4b6;font-size:12px}.writeup-results-bar strong{color:#d5e8d8;font-weight:600}html:not(.js-ready) :is(.writeup-search-form,.writeup-results-bar){display:none}.writeup-reader{padding-top:30px}.article-breadcrumbs ol{color:#a9c0b1;flex-wrap:wrap;align-items:center;gap:9px 13px;margin:0;padding:0;font-size:11px;line-height:2;list-style:none;display:flex}.article-breadcrumbs li:not(:first-child):before{content:"/";color:#8caa98;margin-right:13px}.article-breadcrumbs a{min-height:36px;padding-block:7px;display:inline-block}.article-breadcrumbs a:hover{color:var(--accent)}.article-breadcrumbs [aria-current=page]{color:#d2e0d5}.article-header{border-bottom:1px solid var(--line);padding-block:37px 33px}.article-header h1{letter-spacing:-.06em;margin-top:20px;font-size:clamp(42px,4.9vw,68px);font-weight:500;line-height:1.15}.article-header h1>span{color:var(--accent)}.article-summary{color:#b9cbbf;max-width:760px;margin-top:23px;font-size:16px;line-height:1.9}.article-meta{color:#b1c7b8;flex-wrap:wrap;align-items:center;gap:13px 20px;margin-top:25px;font-size:12px;line-height:1.8;display:flex}.article-category{color:#c4ebd1;background:#1b3023;border:1px solid #4b745a;border-radius:5px;padding:5px 11px}.article-header .writeup-topics{margin-top:18px}.article-layout{grid-template-columns:220px minmax(0,1fr);gap:65px;padding-top:34px;display:grid}.article-sidebar{align-self:start;max-height:calc(100dvh - 146px);padding:8px 15px 12px 0;position:sticky;top:121px;overflow:auto}.article-sidebar h2{color:#c8ddcf;letter-spacing:.5px;margin-bottom:18px;font:11px/1.8 Consolas,monospace}.article-sidebar ol,.mobile-contents ol{margin:0;padding:0;list-style:none}.article-sidebar li+li,.mobile-contents li+li{margin-top:7px}.article-sidebar li a{color:#a9bfb0;border-left:1px solid #355441;padding:8px 0 8px 14px;font-size:11px;line-height:1.8;display:block}.article-sidebar a:hover,.mobile-contents a:hover{color:var(--accent);border-color:var(--accent)}.article-library-link{color:#c8e3d0;align-items:center;gap:8px;min-height:44px;margin-top:24px;font-size:12px;display:inline-flex}.article-body{min-width:0;max-width:800px}.article-context{color:#a9c1b2;border-left:2px solid #729880;margin-bottom:32px;padding-left:17px;font-size:12px;line-height:1.9}.mobile-contents{display:none}.article-prose{color:#cad8ce;overflow-wrap:anywhere;font-size:14px;line-height:1.95}.article-prose>:first-child{margin-top:0}.article-prose h2{color:#e0ede3;letter-spacing:-.7px;margin-block:42px 20px;font-size:26px;font-weight:600;line-height:1.5;position:relative}.article-prose h3{color:#dceadf;letter-spacing:-.3px;margin-block:30px 15px;font-size:19px;font-weight:600;line-height:1.6;position:relative}.article-prose :is(h4,h5,h6){color:#dceadf;margin-block:26px 14px;font-size:16px;font-weight:600;line-height:1.6}.article-prose p{margin-block:17px}.article-prose :is(ul,ol){margin-block:19px;padding-left:25px}.article-prose ul{list-style:outside}.article-prose ol{list-style:decimal}.article-prose li{margin-block:8px;padding-left:4px}.article-prose li :is(ul,ol){margin-block:8px}.article-prose strong{color:#e1ede4;font-weight:650}.article-prose a:not(.heading-anchor){color:#b0e9c7;text-underline-offset:4px;text-decoration:underline}.heading-anchor{color:#8eaf9a;vertical-align:middle;opacity:.5;margin-left:11px;padding-inline:5px;font-size:.7em;display:inline-block}.heading-anchor:hover,.heading-anchor:focus-visible{color:var(--accent);opacity:1}.article-prose hr{background:#2b4135;border:0;height:1px;margin-block:34px}.article-prose blockquote{color:#cedfd2;background:#14231c;border-left:2px solid #83b493;border-radius:0 6px 6px 0;margin:24px 0;padding:17px 22px}.article-prose blockquote p{margin-block:4px}.article-prose code{color:#c9ebd4;overflow-wrap:anywhere;background:#18281f;border:1px solid #314b3a;border-radius:4px;padding:2px 5px;font:12px/1.8 Consolas,SFMono-Regular,monospace}.article-code{background:#101918;border:1px solid #354c3d;border-radius:7px;margin-block:23px;overflow:hidden}.code-label{color:#acc9b4;background:#15231c;border-bottom:1px solid #2e4335;padding:9px 17px;font:10px/1.7 Consolas,monospace;display:block}.article-code pre{overscroll-behavior-inline:contain;color:#d5e8dc;max-width:100%;margin:0;padding:20px;font:12px/1.8 Consolas,SFMono-Regular,monospace;overflow:auto}.article-code pre:focus-visible{outline-offset:-3px}.article-code pre code{font:inherit;color:inherit;white-space:pre;word-break:normal;overflow-wrap:normal;background:0 0;border:0;border-radius:0;padding:0}.article-table-scroll{overscroll-behavior-inline:contain;border:1px solid #354f3e;border-radius:7px;width:100%;margin-block:24px;overflow:auto}.article-table-scroll:focus-visible{outline-offset:3px}.article-prose table{border-collapse:collapse;width:max-content;min-width:100%;font-size:12px;line-height:1.9}.article-prose :is(th,td){text-align:left;border-bottom:1px solid #2b4234;border-right:1px solid #2b4234;max-width:550px;padding:13px 17px}.article-prose th{color:#d5e9dc;background:#1a2b21;font-weight:600}.article-prose td{color:#becfc2;background:#111d17}.article-prose tr:last-child td{border-bottom:0}.article-end{border-top:1px solid var(--line);color:#c8e3d0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:15px;margin-top:43px;padding-block:22px;display:flex}.related-writeups{padding-block:56px 75px}.related-writeups>h2{letter-spacing:-.6px;margin-bottom:25px;font-size:25px;font-weight:500}.related-writeups .writeup-grid{grid-template-columns:repeat(2,minmax(0,1fr))}@media (width<=1100px){.writeup-card{padding:23px}.article-layout{grid-template-columns:195px minmax(0,1fr);gap:38px}}@media (width<=1000px){.article-layout{grid-template-columns:1fr}.article-sidebar{display:none}.article-body{max-width:none}.mobile-contents{background:#122019;border:1px solid #405e4b;border-radius:7px;margin-bottom:27px;display:block}.mobile-contents summary{color:#c4dbcc;justify-content:space-between;align-items:center;gap:15px;padding:15px 18px;font-size:12px;list-style:none;display:flex}.mobile-contents summary::-webkit-details-marker{display:none}.mobile-contents[open] summary>svg{transform:rotate(180deg)}.mobile-contents nav{padding:0 18px 17px}.mobile-contents a{color:#b6cdbd;padding-block:8px;font-size:12px;line-height:1.8;display:block}}@media (width<=900px){.desktop-nav{display:none}.header-contact{margin-left:auto}.mobile-menu{display:block}.hero{gap:26px}.writeup-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.writeups-section .writeup-card:last-child{grid-column:1/-1}.writeups-section .writeup-card:last-child>p{max-width:560px}}@media (width<=600px){.hero{gap:20px;padding-top:32px}.hero h1{margin-top:18px}.writeup-grid,.related-writeups .writeup-grid{grid-template-columns:1fr;gap:17px}.writeups-section .writeup-card:last-child{grid-column:auto}.writeup-card{padding:24px}.writeup-card h3{margin-top:19px;font-size:22px}.writeup-card>p{font-size:14px}.writeup-topics li{font-size:10px}.writeups-event{gap:8px;font-size:11px}.writeups-event time{margin-left:0;padding-left:10px}.writeups-page-header{padding-block:23px 28px}.writeups-page-header h1{font-size:clamp(37px,8.4vw,50px);line-height:1.25}.writeups-page-intro{margin-top:20px;font-size:14px}.writeup-search-form{flex-direction:column;align-items:flex-start;gap:14px}.collection-count{display:none}.writeup-results-bar{gap:12px}.writeup-collection{padding-bottom:55px}.writeup-reader{padding-top:22px}.article-breadcrumbs ol{gap:4px 9px;font-size:10px}.article-breadcrumbs li:not(:first-child):before{margin-right:9px}.article-header{padding-block:27px}.article-header .eyebrow{letter-spacing:1.3px;font-size:9px}.article-header h1{margin-top:17px;font-size:clamp(38px,9.2vw,55px);line-height:1.25}.article-summary{margin-top:20px;font-size:14px}.article-meta{gap:11px 16px;margin-top:22px;font-size:11px}.article-layout{padding-top:25px}.article-context{font-size:11px}.article-prose{font-size:14px;line-height:1.9}.article-prose h2{margin-top:32px;font-size:22px}.article-prose h3{font-size:18px}.article-prose :is(ul,ol){padding-left:21px}.article-prose blockquote{padding:15px}.article-code pre{padding:17px;font-size:11px}.heading-anchor{margin-left:6px}.article-end{margin-top:32px}.article-end .text-link{font-size:12px}.related-writeups{padding-block:32px 55px}.related-writeups>h2{font-size:22px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.text-link:hover svg,.button:hover svg{transform:none}}@media (forced-colors:active){.credential-icon,.education-icon,.security-area-icon,.node-icon{border-color:canvastext}.featured-badge,.award-label,.category-filters button{border:1px solid canvastext}}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
