@import"https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap";body{font-family:"Roboto",sans-serif;transition:background-color .3s ease,color .3s ease}body.light-theme{background:linear-gradient(135deg, #FFE5E5 0%, #E5FFE5 25%, #E5E5FF 50%, #FFFFE5 75%, #FFE5FF 100%);background-attachment:fixed;background-size:400% 400%;animation:gradientBG 15s ease infinite;color:#333}body.light-theme .site-header,body.light-theme .page-content,body.light-theme .site-footer{background-color:rgba(255,255,255,.45);color:#333}body.light-theme a,body.light-theme a:visited{color:#007bff}body.light-theme a:hover,body.light-theme a:visited:hover{color:#0056b3}@keyframes gradientBG{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}body.dark-theme{background:linear-gradient(135deg, #FFB3BA 0%, #FFDFBA 25%, #DCEDC1 50%, #C7CEEA 75%, #F0E0D6 100%);background-attachment:fixed;color:#ddd}body.dark-theme .post-title,body.dark-theme h1,body.dark-theme h2,body.dark-theme h3,body.dark-theme h4,body.dark-theme h5,body.dark-theme h6,body.dark-theme p{color:#ddd}body.dark-theme .site-header,body.dark-theme .page-content,body.dark-theme .site-footer{background-color:rgba(34,34,34,.8);color:#ddd}body.dark-theme a,body.dark-theme a:visited{color:#3cf}body.dark-theme a:hover,body.dark-theme a:visited:hover{color:#80dfff}.site-header,.page-content,.site-footer{padding:20px;border-radius:10px;margin-bottom:20px;transition:background-color .3s ease,color .3s ease}body .site-header{position:relative;padding:15px 0;border-top:5px solid #424242;border-bottom:1px solid #e8e8e8;min-height:55.95px}body .site-header .wrapper{display:flex;justify-content:center;align-items:center;width:100%;max-width:1200px;margin:0 auto;padding:0 20px}body .site-header .site-header-content{display:flex;align-items:center;gap:30px}body .site-header .site-nav{float:none !important;display:flex;align-items:center;gap:40px;line-height:inherit}body .site-header .site-nav .page-link{color:inherit;line-height:inherit;margin:0;padding:0 10px;font-size:1.1em;font-weight:500;text-decoration:none;transition:color .3s ease}body .site-header .site-nav .page-link:hover{color:#007bff;text-decoration:none}.dark-theme body .site-header .site-nav .page-link:hover{color:#3cf}body .site-header #theme-toggle{background:none;border:none;cursor:pointer;font-size:1em;padding:.3em;border-radius:.3em;transition:color .3s ease,transform .3s ease;display:flex;align-items:center;height:auto;margin:0;line-height:inherit}body .site-header #theme-toggle:hover{transform:scale(1.1)}.light-theme #theme-toggle{color:#333}.dark-theme #theme-toggle{color:#ddd}.tag-label{display:inline-block;padding:.2em .6em;margin:.1em;font-size:.8em;font-weight:600;text-decoration:none;border-radius:12px;transition:all .2s ease}.tag-label[data-tag=academic]{background-color:rgba(255,107,107,.15);color:#ff0505;border:1px solid rgba(255,107,107,.3)}.tag-label[data-tag=academic]:hover{background-color:rgba(255,107,107,.25);color:#d10000;border-color:rgba(255,107,107,.5);transform:translateY(-1px)}.tag-label[data-tag=research]{background-color:rgba(255,142,142,.15);color:#ff2828;border:1px solid rgba(255,142,142,.3)}.tag-label[data-tag=research]:hover{background-color:rgba(255,142,142,.25);color:#f40000;border-color:rgba(255,142,142,.5);transform:translateY(-1px)}.tag-label[data-tag=publication]{background-color:rgba(255,179,179,.15);color:#ff4d4d;border:1px solid rgba(255,179,179,.3)}.tag-label[data-tag=publication]:hover{background-color:rgba(255,179,179,.25);color:#ff1a1a;border-color:rgba(255,179,179,.5);transform:translateY(-1px)}.tag-label[data-tag=conference]{background-color:rgba(255,105,180,.15);color:#ff0381;border:1px solid rgba(255,105,180,.3)}.tag-label[data-tag=conference]:hover{background-color:rgba(255,105,180,.25);color:#cf0068;border-color:rgba(255,105,180,.5);transform:translateY(-1px)}.tag-label[data-tag=presentation]{background-color:rgba(255,20,147,.15);color:#ad005d;border:1px solid rgba(255,20,147,.3)}.tag-label[data-tag=presentation]:hover{background-color:rgba(255,20,147,.25);color:#7a0042;border-color:rgba(255,20,147,.5);transform:translateY(-1px)}.tag-label[data-tag=workshop]{background-color:rgba(220,20,60,.15);color:#7f0c23;border:1px solid rgba(220,20,60,.3)}.tag-label[data-tag=workshop]:hover{background-color:rgba(220,20,60,.25);color:#500716;border-color:rgba(220,20,60,.5);transform:translateY(-1px)}.tag-label[data-tag=seminar]{background-color:rgba(178,34,34,.15);color:#5c1212;border:1px solid rgba(178,34,34,.3)}.tag-label[data-tag=seminar]:hover{background-color:rgba(178,34,34,.25);color:#320909;border-color:rgba(178,34,34,.5);transform:translateY(-1px)}.tag-label[data-tag=thesis]{background-color:rgba(205,92,92,.15);color:#952e2e;border:1px solid rgba(205,92,92,.3)}.tag-label[data-tag=thesis]:hover{background-color:rgba(205,92,92,.25);color:#6e2222;border-color:rgba(205,92,92,.5);transform:translateY(-1px)}.tag-label[data-tag=web-dev]{background-color:rgba(255,127,80,.15);color:#e93f00;border:1px solid rgba(255,127,80,.3)}.tag-label[data-tag=web-dev]:hover{background-color:rgba(255,127,80,.25);color:#b63100;border-color:rgba(255,127,80,.5);transform:translateY(-1px)}.tag-label[data-tag=frontend]{background-color:rgba(255,99,71,.15);color:#e02200;border:1px solid rgba(255,99,71,.3)}.tag-label[data-tag=frontend]:hover{background-color:rgba(255,99,71,.25);color:#ad1a00;border-color:rgba(255,99,71,.5);transform:translateY(-1px)}.tag-label[data-tag=backend]{background-color:rgba(255,165,0,.15);color:#996300;border:1px solid rgba(255,165,0,.3)}.tag-label[data-tag=backend]:hover{background-color:rgba(255,165,0,.25);color:#664200;border-color:rgba(255,165,0,.5);transform:translateY(-1px)}.tag-label[data-tag=fullstack]{background-color:rgba(255,140,0,.15);color:#995400;border:1px solid rgba(255,140,0,.3)}.tag-label[data-tag=fullstack]:hover{background-color:rgba(255,140,0,.25);color:#663800;border-color:rgba(255,140,0,.5);transform:translateY(-1px)}.tag-label[data-tag=react]{background-color:rgba(255,179,71,.15);color:#e08300;border:1px solid rgba(255,179,71,.3)}.tag-label[data-tag=react]:hover{background-color:rgba(255,179,71,.25);color:#ad6600;border-color:rgba(255,179,71,.5);transform:translateY(-1px)}.tag-label[data-tag=vue]{background-color:rgba(255,218,185,.15);color:#ffa453;border:1px solid rgba(255,218,185,.3)}.tag-label[data-tag=vue]:hover{background-color:rgba(255,218,185,.25);color:#ff8920;border-color:rgba(255,218,185,.5);transform:translateY(-1px)}.tag-label[data-tag=angular]{background-color:rgba(255,239,213,.15);color:#ffc86f;border:1px solid rgba(255,239,213,.3)}.tag-label[data-tag=angular]:hover{background-color:rgba(255,239,213,.25);color:#ffb53c;border-color:rgba(255,239,213,.5);transform:translateY(-1px)}.tag-label[data-tag=svelte]{background-color:rgba(255,127,80,.15);color:#e93f00;border:1px solid rgba(255,127,80,.3)}.tag-label[data-tag=svelte]:hover{background-color:rgba(255,127,80,.25);color:#b63100;border-color:rgba(255,127,80,.5);transform:translateY(-1px)}.tag-label[data-tag=javascript]{background-color:rgba(255,215,0,.15);color:#998100;border:1px solid rgba(255,215,0,.3)}.tag-label[data-tag=javascript]:hover{background-color:rgba(255,215,0,.25);color:#665600;border-color:rgba(255,215,0,.5);transform:translateY(-1px)}.tag-label[data-tag=typescript]{background-color:rgba(255,255,0,.15);color:#990;border:1px solid rgba(255,255,0,.3)}.tag-label[data-tag=typescript]:hover{background-color:rgba(255,255,0,.25);color:#660;border-color:rgba(255,255,0,.5);transform:translateY(-1px)}.tag-label[data-tag=nodejs]{background-color:rgba(240,230,140,.15);color:#e4d232;border:1px solid rgba(240,230,140,.3)}.tag-label[data-tag=nodejs]:hover{background-color:rgba(240,230,140,.25);color:#c9b71a;border-color:rgba(240,230,140,.5);transform:translateY(-1px)}.tag-label[data-tag=deno]{background-color:rgba(189,183,107,.15);color:#86813c;border:1px solid rgba(189,183,107,.3)}.tag-label[data-tag=deno]:hover{background-color:rgba(189,183,107,.25);color:#635f2c;border-color:rgba(189,183,107,.5);transform:translateY(-1px)}.tag-label[data-tag=bun]{background-color:rgba(218,165,32,.15);color:#816213;border:1px solid rgba(218,165,32,.3)}.tag-label[data-tag=bun]:hover{background-color:rgba(218,165,32,.25);color:#55400c;border-color:rgba(218,165,32,.5);transform:translateY(-1px)}.tag-label[data-tag=npm]{background-color:rgba(184,134,11,.15);color:#584005;border:1px solid rgba(184,134,11,.3)}.tag-label[data-tag=npm]:hover{background-color:rgba(184,134,11,.25);color:#281d02;border-color:rgba(184,134,11,.5);transform:translateY(-1px)}.tag-label[data-tag=yarn]{background-color:rgba(255,248,220,.15);color:#ffe476;border:1px solid rgba(255,248,220,.3)}.tag-label[data-tag=yarn]:hover{background-color:rgba(255,248,220,.25);color:#ffd943;border-color:rgba(255,248,220,.5);transform:translateY(-1px)}.tag-label[data-tag=webpack]{background-color:rgba(255,250,205,.15);color:#fff067;border:1px solid rgba(255,250,205,.3)}.tag-label[data-tag=webpack]:hover{background-color:rgba(255,250,205,.25);color:#ffeb34;border-color:rgba(255,250,205,.5);transform:translateY(-1px)}.tag-label[data-tag=python]{background-color:rgba(144,238,144,.15);color:#38e038;border:1px solid rgba(144,238,144,.3)}.tag-label[data-tag=python]:hover{background-color:rgba(144,238,144,.25);color:#1ec71e;border-color:rgba(144,238,144,.5);transform:translateY(-1px)}.tag-label[data-tag=django]{background-color:rgba(152,251,152,.15);color:#36f736;border:1px solid rgba(152,251,152,.3)}.tag-label[data-tag=django]:hover{background-color:rgba(152,251,152,.25);color:#09f109;border-color:rgba(152,251,152,.5);transform:translateY(-1px)}.tag-label[data-tag=flask]{background-color:rgba(0,255,127,.15);color:#00994c;border:1px solid rgba(0,255,127,.3)}.tag-label[data-tag=flask]:hover{background-color:rgba(0,255,127,.25);color:#063;border-color:rgba(0,255,127,.5);transform:translateY(-1px)}.tag-label[data-tag=fastapi]{background-color:rgba(0,250,154,.15);color:#00945b;border:1px solid rgba(0,250,154,.3)}.tag-label[data-tag=fastapi]:hover{background-color:rgba(0,250,154,.25);color:#00613c;border-color:rgba(0,250,154,.5);transform:translateY(-1px)}.tag-label[data-tag=machine-learning]{background-color:rgba(50,205,50,.15);color:#1e7b1e;border:1px solid rgba(50,205,50,.3)}.tag-label[data-tag=machine-learning]:hover{background-color:rgba(50,205,50,.25);color:#145214;border-color:rgba(50,205,50,.5);transform:translateY(-1px)}.tag-label[data-tag=ai]{background-color:rgba(34,139,34,.15);color:#0e390e;border:1px solid rgba(34,139,34,.3)}.tag-label[data-tag=ai]:hover{background-color:rgba(34,139,34,.25);color:#041004;border-color:rgba(34,139,34,.5);transform:translateY(-1px)}.tag-label[data-tag=data-science]{background-color:rgba(0,100,0,.15);color:#000;border:1px solid rgba(0,100,0,.3)}.tag-label[data-tag=data-science]:hover{background-color:rgba(0,100,0,.25);color:#000;border-color:rgba(0,100,0,.5);transform:translateY(-1px)}.tag-label[data-tag=analytics]{background-color:rgba(154,205,50,.15);color:#5c7b1e;border:1px solid rgba(154,205,50,.3)}.tag-label[data-tag=analytics]:hover{background-color:rgba(154,205,50,.25);color:#3e5214;border-color:rgba(154,205,50,.5);transform:translateY(-1px)}.tag-label[data-tag=gis]{background-color:rgba(135,206,235,.15);color:#30aadc;border:1px solid rgba(135,206,235,.3)}.tag-label[data-tag=gis]:hover{background-color:rgba(135,206,235,.25);color:#1f8dba;border-color:rgba(135,206,235,.5);transform:translateY(-1px)}.tag-label[data-tag=mapping]{background-color:rgba(135,206,250,.15);color:#25a6f6;border:1px solid rgba(135,206,250,.3)}.tag-label[data-tag=mapping]:hover{background-color:rgba(135,206,250,.25);color:#098ddf;border-color:rgba(135,206,250,.5);transform:translateY(-1px)}.tag-label[data-tag=arcgis]{background-color:rgba(0,191,255,.15);color:#007399;border:1px solid rgba(0,191,255,.3)}.tag-label[data-tag=arcgis]:hover{background-color:rgba(0,191,255,.25);color:#004c66;border-color:rgba(0,191,255,.5);transform:translateY(-1px)}.tag-label[data-tag=qgis]{background-color:rgba(30,144,255,.15);color:#005db7;border:1px solid rgba(30,144,255,.3)}.tag-label[data-tag=qgis]:hover{background-color:rgba(30,144,255,.25);color:#004384;border-color:rgba(30,144,255,.5);transform:translateY(-1px)}.tag-label[data-tag=leaflet]{background-color:rgba(65,105,225,.15);color:#1a3ca2;border:1px solid rgba(65,105,225,.3)}.tag-label[data-tag=leaflet]:hover{background-color:rgba(65,105,225,.25);color:#132c76;border-color:rgba(65,105,225,.5);transform:translateY(-1px)}.tag-label[data-tag=mapbox]{background-color:rgba(0,0,255,.15);color:#009;border:1px solid rgba(0,0,255,.3)}.tag-label[data-tag=mapbox]:hover{background-color:rgba(0,0,255,.25);color:#006;border-color:rgba(0,0,255,.5);transform:translateY(-1px)}.tag-label[data-tag=geospatial]{background-color:rgba(70,130,180,.15);color:#294d6b;border:1px solid rgba(70,130,180,.3)}.tag-label[data-tag=geospatial]:hover{background-color:rgba(70,130,180,.25);color:#1b3246;border-color:rgba(70,130,180,.5);transform:translateY(-1px)}.tag-label[data-tag=cartography]{background-color:rgba(100,149,237,.15);color:#185bd3;border:1px solid rgba(100,149,237,.3)}.tag-label[data-tag=cartography]:hover{background-color:rgba(100,149,237,.25);color:#1347a5;border-color:rgba(100,149,237,.5);transform:translateY(-1px)}.tag-label[data-tag=r]{background-color:rgba(221,160,221,.15);color:#c255c2;border:1px solid rgba(221,160,221,.3)}.tag-label[data-tag=r]:hover{background-color:rgba(221,160,221,.25);color:#a83ca8;border-color:rgba(221,160,221,.5);transform:translateY(-1px)}.tag-label[data-tag=rstudio]{background-color:rgba(218,112,214,.15);color:#b52fb0;border:1px solid rgba(218,112,214,.3)}.tag-label[data-tag=rstudio]:hover{background-color:rgba(218,112,214,.25);color:#8d2489;border-color:rgba(218,112,214,.5);transform:translateY(-1px)}.tag-label[data-tag=statistics]{background-color:rgba(186,85,211,.15);color:#83289a;border:1px solid rgba(186,85,211,.3)}.tag-label[data-tag=statistics]:hover{background-color:rgba(186,85,211,.25);color:#611d72;border-color:rgba(186,85,211,.5);transform:translateY(-1px)}.tag-label[data-tag=visualization]{background-color:rgba(147,112,219,.15);color:#5b2eb7;border:1px solid rgba(147,112,219,.3)}.tag-label[data-tag=visualization]:hover{background-color:rgba(147,112,219,.25);color:#47248e;border-color:rgba(147,112,219,.5);transform:translateY(-1px)}.tag-label[data-tag=ggplot]{background-color:rgba(138,43,226,.15);color:#561493;border:1px solid rgba(138,43,226,.3)}.tag-label[data-tag=ggplot]:hover{background-color:rgba(138,43,226,.25);color:#3c0e66;border-color:rgba(138,43,226,.5);transform:translateY(-1px)}.tag-label[data-tag=shiny]{background-color:rgba(148,0,211,.15);color:#4c006d;border:1px solid rgba(148,0,211,.3)}.tag-label[data-tag=shiny]:hover{background-color:rgba(148,0,211,.25);color:#29003a;border-color:rgba(148,0,211,.5);transform:translateY(-1px)}.tag-label[data-tag=tidyverse]{background-color:rgba(139,0,139,.15);color:#250025;border:1px solid rgba(139,0,139,.3)}.tag-label[data-tag=tidyverse]:hover{background-color:rgba(139,0,139,.25);color:#000;border-color:rgba(139,0,139,.5);transform:translateY(-1px)}.tag-label[data-tag=analysis]{background-color:rgba(128,0,128,.15);color:#1a001a;border:1px solid rgba(128,0,128,.3)}.tag-label[data-tag=analysis]:hover{background-color:rgba(128,0,128,.25);color:#000;border-color:rgba(128,0,128,.5);transform:translateY(-1px)}.tag-label[data-tag=database]{background-color:rgba(210,180,140,.15);color:#b28446;border:1px solid rgba(210,180,140,.3)}.tag-label[data-tag=database]:hover{background-color:rgba(210,180,140,.25);color:#8e6937;border-color:rgba(210,180,140,.5);transform:translateY(-1px)}.tag-label[data-tag=sql]{background-color:rgba(205,133,63,.15);color:#845222;border:1px solid rgba(205,133,63,.3)}.tag-label[data-tag=sql]:hover{background-color:rgba(205,133,63,.25);color:#5b3918;border-color:rgba(205,133,63,.5);transform:translateY(-1px)}.tag-label[data-tag=postgresql]{background-color:rgba(160,82,45,.15);color:#502917;border:1px solid rgba(160,82,45,.3)}.tag-label[data-tag=postgresql]:hover{background-color:rgba(160,82,45,.25);color:#29150b;border-color:rgba(160,82,45,.5);transform:translateY(-1px)}.tag-label[data-tag=mysql]{background-color:rgba(139,69,19,.15);color:#311807;border:1px solid rgba(139,69,19,.3)}.tag-label[data-tag=mysql]:hover{background-color:rgba(139,69,19,.25);color:#040201;border-color:rgba(139,69,19,.5);transform:translateY(-1px)}.tag-label[data-tag=mongodb]{background-color:rgba(210,105,30,.15);color:#793c11;border:1px solid rgba(210,105,30,.3)}.tag-label[data-tag=mongodb]:hover{background-color:rgba(210,105,30,.25);color:#4c260b;border-color:rgba(210,105,30,.5);transform:translateY(-1px)}.tag-label[data-tag=redis]{background-color:rgba(188,143,143,.15);color:#8f5656;border:1px solid rgba(188,143,143,.3)}.tag-label[data-tag=redis]:hover{background-color:rgba(188,143,143,.25);color:#6f4343;border-color:rgba(188,143,143,.5);transform:translateY(-1px)}.tag-label[data-tag=sqlite]{background-color:rgba(244,164,96,.15);color:#df6f0f;border:1px solid rgba(244,164,96,.3)}.tag-label[data-tag=sqlite]:hover{background-color:rgba(244,164,96,.25);color:#af570c;border-color:rgba(244,164,96,.5);transform:translateY(-1px)}.tag-label[data-tag=nosql]{background-color:rgba(222,184,135,.15);color:#c88937;border:1px solid rgba(222,184,135,.3)}.tag-label[data-tag=nosql]:hover{background-color:rgba(222,184,135,.25);color:#a06d2c;border-color:rgba(222,184,135,.5);transform:translateY(-1px)}.tag-label[data-tag=project]{background-color:rgba(112,128,144,.15);color:#434d57;border:1px solid rgba(112,128,144,.3)}.tag-label[data-tag=project]:hover{background-color:rgba(112,128,144,.25);color:#2d343a;border-color:rgba(112,128,144,.5);transform:translateY(-1px)}.tag-label[data-tag=blog]{background-color:rgba(119,136,153,.15);color:#495561;border:1px solid rgba(119,136,153,.3)}.tag-label[data-tag=blog]:hover{background-color:rgba(119,136,153,.25);color:#333c44;border-color:rgba(119,136,153,.5);transform:translateY(-1px)}.tag-label[data-tag=tutorial]{background-color:rgba(105,105,105,.15);color:#363636;border:1px solid rgba(105,105,105,.3)}.tag-label[data-tag=tutorial]:hover{background-color:rgba(105,105,105,.25);color:#1d1d1d;border-color:rgba(105,105,105,.5);transform:translateY(-1px)}.tag-label[data-tag=documentation]{background-color:rgba(128,128,128,.15);color:#4d4d4d;border:1px solid rgba(128,128,128,.3)}.tag-label[data-tag=documentation]:hover{background-color:rgba(128,128,128,.25);color:#343434;border-color:rgba(128,128,128,.5);transform:translateY(-1px)}.tag-label[data-tag=guide]{background-color:rgba(169,169,169,.15);color:#767676;border:1px solid rgba(169,169,169,.3)}.tag-label[data-tag=guide]:hover{background-color:rgba(169,169,169,.25);color:#5d5d5d;border-color:rgba(169,169,169,.5);transform:translateY(-1px)}.tag-label[data-tag=tips]{background-color:rgba(192,192,192,.15);color:#8d8d8d;border:1px solid rgba(192,192,192,.3)}.tag-label[data-tag=tips]:hover{background-color:rgba(192,192,192,.25);color:#747474;border-color:rgba(192,192,192,.5);transform:translateY(-1px)}.tag-label[data-tag=howto]{background-color:rgba(211,211,211,.15);color:#a0a0a0;border:1px solid rgba(211,211,211,.3)}.tag-label[data-tag=howto]:hover{background-color:rgba(211,211,211,.25);color:#878787;border-color:rgba(211,211,211,.5);transform:translateY(-1px)}.tag-label[data-tag=reference]{background-color:rgba(220,220,220,.15);color:#a9a9a9;border:1px solid rgba(220,220,220,.3)}.tag-label[data-tag=reference]:hover{background-color:rgba(220,220,220,.25);color:#909090;border-color:rgba(220,220,220,.5);transform:translateY(-1px)}.tag-label[data-tag=open-source]{background-color:rgba(32,178,170,.15);color:#105c57;border:1px solid rgba(32,178,170,.3)}.tag-label[data-tag=open-source]:hover{background-color:rgba(32,178,170,.25);color:#09302e;border-color:rgba(32,178,170,.5);transform:translateY(-1px)}.tag-label[data-tag=github]{background-color:rgba(47,79,79,.15);color:#090f0f;border:1px solid rgba(47,79,79,.3)}.tag-label[data-tag=github]:hover{background-color:rgba(47,79,79,.25);color:#000;border-color:rgba(47,79,79,.5);transform:translateY(-1px)}.tag-label[data-tag=git]{background-color:rgba(0,139,139,.15);color:#002525;border:1px solid rgba(0,139,139,.3)}.tag-label[data-tag=git]:hover{background-color:rgba(0,139,139,.25);color:#000;border-color:rgba(0,139,139,.5);transform:translateY(-1px)}.tag-label[data-tag=docker]{background-color:rgba(95,158,160,.15);color:#395f60;border:1px solid rgba(95,158,160,.3)}.tag-label[data-tag=docker]:hover{background-color:rgba(95,158,160,.25);color:#263f40;border-color:rgba(95,158,160,.5);transform:translateY(-1px)}.tag-label[data-tag=kubernetes]{background-color:rgba(70,130,180,.15);color:#294d6b;border:1px solid rgba(70,130,180,.3)}.tag-label[data-tag=kubernetes]:hover{background-color:rgba(70,130,180,.25);color:#1b3246;border-color:rgba(70,130,180,.5);transform:translateY(-1px)}.tag-label[data-tag=aws]{background-color:rgba(255,140,0,.15);color:#995400;border:1px solid rgba(255,140,0,.3)}.tag-label[data-tag=aws]:hover{background-color:rgba(255,140,0,.25);color:#663800;border-color:rgba(255,140,0,.5);transform:translateY(-1px)}.tag-label[data-tag=azure]{background-color:rgba(0,0,205,.15);color:#000067;border:1px solid rgba(0,0,205,.3)}.tag-label[data-tag=azure]:hover{background-color:rgba(0,0,205,.25);color:#000034;border-color:rgba(0,0,205,.5);transform:translateY(-1px)}.tag-label[data-tag=gcp]{background-color:rgba(66,133,244,.15);color:#0b51c5;border:1px solid rgba(66,133,244,.3)}.tag-label[data-tag=gcp]:hover{background-color:rgba(66,133,244,.25);color:#093d94;border-color:rgba(66,133,244,.5);transform:translateY(-1px)}.tag-label:not([data-tag]){background-color:rgba(128,128,128,.15);color:#555;border:1px solid rgba(128,128,128,.3)}.tag-label:not([data-tag]):hover{background-color:rgba(128,128,128,.25);color:#333;border-color:rgba(128,128,128,.5);transform:translateY(-1px)}@media(prefers-color-scheme: dark){.tag-label[data-tag=academic]{background-color:rgba(255,107,107,.2);color:#ffb8b8;border-color:rgba(255,107,107,.4)}.tag-label[data-tag=academic]:hover{background-color:rgba(255,107,107,.3);color:#ffebeb;border-color:rgba(255,107,107,.6)}.tag-label[data-tag=research]{background-color:rgba(255,142,142,.2);color:#ffdbdb;border-color:rgba(255,142,142,.4)}.tag-label[data-tag=research]:hover{background-color:rgba(255,142,142,.3);color:#fff;border-color:rgba(255,142,142,.6)}.tag-label[data-tag=publication]{background-color:rgba(255,179,179,.2);color:#fff;border-color:rgba(255,179,179,.4)}.tag-label[data-tag=publication]:hover{background-color:rgba(255,179,179,.3);color:#fff;border-color:rgba(255,179,179,.6)}.tag-label[data-tag=conference]{background-color:rgba(255,105,180,.2);color:#ffb6da;border-color:rgba(255,105,180,.4)}.tag-label[data-tag=conference]:hover{background-color:rgba(255,105,180,.3);color:#ffe9f4;border-color:rgba(255,105,180,.6)}.tag-label[data-tag=presentation]{background-color:rgba(255,20,147,.2);color:#ff61b6;border-color:rgba(255,20,147,.4)}.tag-label[data-tag=presentation]:hover{background-color:rgba(255,20,147,.3);color:#ff94ce;border-color:rgba(255,20,147,.6)}.tag-label[data-tag=workshop]{background-color:rgba(220,20,60,.2);color:#ef4e6e;border-color:rgba(220,20,60,.4)}.tag-label[data-tag=workshop]:hover{background-color:rgba(220,20,60,.3);color:#f37c94;border-color:rgba(220,20,60,.6)}.tag-label[data-tag=seminar]{background-color:rgba(178,34,34,.2);color:#db4545;border-color:rgba(178,34,34,.4)}.tag-label[data-tag=seminar]:hover{background-color:rgba(178,34,34,.3);color:#e47070;border-color:rgba(178,34,34,.6)}.tag-label[data-tag=thesis]{background-color:rgba(205,92,92,.2);color:#df9797;border-color:rgba(205,92,92,.4)}.tag-label[data-tag=thesis]:hover{background-color:rgba(205,92,92,.3);color:#ebbebe;border-color:rgba(205,92,92,.6)}.tag-label[data-tag=web-dev]{background-color:rgba(255,127,80,.2);color:#ffb79d;border-color:rgba(255,127,80,.4)}.tag-label[data-tag=web-dev]:hover{background-color:rgba(255,127,80,.3);color:#ffdcd0;border-color:rgba(255,127,80,.6)}.tag-label[data-tag=frontend]{background-color:rgba(255,99,71,.2);color:#ffa494;border-color:rgba(255,99,71,.4)}.tag-label[data-tag=frontend]:hover{background-color:rgba(255,99,71,.3);color:#ffcfc7;border-color:rgba(255,99,71,.6)}.tag-label[data-tag=backend]{background-color:rgba(255,165,0,.2);color:#ffc04d;border-color:rgba(255,165,0,.4)}.tag-label[data-tag=backend]:hover{background-color:rgba(255,165,0,.3);color:#ffd280;border-color:rgba(255,165,0,.6)}.tag-label[data-tag=fullstack]{background-color:rgba(255,140,0,.2);color:#ffaf4d;border-color:rgba(255,140,0,.4)}.tag-label[data-tag=fullstack]:hover{background-color:rgba(255,140,0,.3);color:#ffc680;border-color:rgba(255,140,0,.6)}.tag-label[data-tag=react]{background-color:rgba(255,179,71,.2);color:#ffd394;border-color:rgba(255,179,71,.4)}.tag-label[data-tag=react]:hover{background-color:rgba(255,179,71,.3);color:#ffe8c7;border-color:rgba(255,179,71,.6)}.tag-label[data-tag=vue]{background-color:rgba(255,218,185,.2);color:#fff;border-color:rgba(255,218,185,.4)}.tag-label[data-tag=vue]:hover{background-color:rgba(255,218,185,.3);color:#fff;border-color:rgba(255,218,185,.6)}.tag-label[data-tag=angular]{background-color:rgba(255,239,213,.2);color:#fff;border-color:rgba(255,239,213,.4)}.tag-label[data-tag=angular]:hover{background-color:rgba(255,239,213,.3);color:#fff;border-color:rgba(255,239,213,.6)}.tag-label[data-tag=svelte]{background-color:rgba(255,127,80,.2);color:#ffb79d;border-color:rgba(255,127,80,.4)}.tag-label[data-tag=svelte]:hover{background-color:rgba(255,127,80,.3);color:#ffdcd0;border-color:rgba(255,127,80,.6)}.tag-label[data-tag=javascript]{background-color:rgba(255,215,0,.2);color:#ffe34d;border-color:rgba(255,215,0,.4)}.tag-label[data-tag=javascript]:hover{background-color:rgba(255,215,0,.3);color:#ffeb80;border-color:rgba(255,215,0,.6)}.tag-label[data-tag=typescript]{background-color:rgba(255,255,0,.2);color:#ffff4d;border-color:rgba(255,255,0,.4)}.tag-label[data-tag=typescript]:hover{background-color:rgba(255,255,0,.3);color:#ffff80;border-color:rgba(255,255,0,.6)}.tag-label[data-tag=nodejs]{background-color:rgba(240,230,140,.2);color:#f9f5d0;border-color:rgba(240,230,140,.4)}.tag-label[data-tag=nodejs]:hover{background-color:rgba(240,230,140,.3);color:#fffffd;border-color:rgba(240,230,140,.6)}.tag-label[data-tag=deno]{background-color:rgba(189,183,107,.2);color:#d5d1a0;border-color:rgba(189,183,107,.4)}.tag-label[data-tag=deno]:hover{background-color:rgba(189,183,107,.3);color:#e4e2c3;border-color:rgba(189,183,107,.6)}.tag-label[data-tag=bun]{background-color:rgba(218,165,32,.2);color:#e8c15f;border-color:rgba(218,165,32,.4)}.tag-label[data-tag=bun]:hover{background-color:rgba(218,165,32,.3);color:#eed28b;border-color:rgba(218,165,32,.6)}.tag-label[data-tag=npm]{background-color:rgba(184,134,11,.2);color:#f2b41e;border-color:rgba(184,134,11,.4)}.tag-label[data-tag=npm]:hover{background-color:rgba(184,134,11,.3);color:#f4c44e;border-color:rgba(184,134,11,.6)}.tag-label[data-tag=yarn]{background-color:rgba(255,248,220,.2);color:#fff;border-color:rgba(255,248,220,.4)}.tag-label[data-tag=yarn]:hover{background-color:rgba(255,248,220,.3);color:#fff;border-color:rgba(255,248,220,.6)}.tag-label[data-tag=webpack]{background-color:rgba(255,250,205,.2);color:#fff;border-color:rgba(255,250,205,.4)}.tag-label[data-tag=webpack]:hover{background-color:rgba(255,250,205,.3);color:#fff;border-color:rgba(255,250,205,.6)}.tag-label[data-tag=python]{background-color:rgba(144,238,144,.2);color:#d2f8d2;border-color:rgba(144,238,144,.4)}.tag-label[data-tag=python]:hover{background-color:rgba(144,238,144,.3);color:#fff;border-color:rgba(144,238,144,.6)}.tag-label[data-tag=django]{background-color:rgba(152,251,152,.2);color:#e2fee2;border-color:rgba(152,251,152,.4)}.tag-label[data-tag=django]:hover{background-color:rgba(152,251,152,.3);color:#fff;border-color:rgba(152,251,152,.6)}.tag-label[data-tag=flask]{background-color:rgba(0,255,127,.2);color:#4dffa5;border-color:rgba(0,255,127,.4)}.tag-label[data-tag=flask]:hover{background-color:rgba(0,255,127,.3);color:#80ffbf;border-color:rgba(0,255,127,.6)}.tag-label[data-tag=fastapi]{background-color:rgba(0,250,154,.2);color:#48ffb9;border-color:rgba(0,250,154,.4)}.tag-label[data-tag=fastapi]:hover{background-color:rgba(0,250,154,.3);color:#7bffcc;border-color:rgba(0,250,154,.6)}.tag-label[data-tag=machine-learning]{background-color:rgba(50,205,50,.2);color:#70dc70;border-color:rgba(50,205,50,.4)}.tag-label[data-tag=machine-learning]:hover{background-color:rgba(50,205,50,.3);color:#99e699;border-color:rgba(50,205,50,.6)}.tag-label[data-tag=ai]{background-color:rgba(34,139,34,.2);color:#31c831;border-color:rgba(34,139,34,.4)}.tag-label[data-tag=ai]:hover{background-color:rgba(34,139,34,.3);color:#57d657;border-color:rgba(34,139,34,.6)}.tag-label[data-tag=data-science]{background-color:rgba(0,100,0,.2);color:#00b100;border-color:rgba(0,100,0,.4)}.tag-label[data-tag=data-science]:hover{background-color:rgba(0,100,0,.3);color:#00e400;border-color:rgba(0,100,0,.6)}.tag-label[data-tag=analytics]{background-color:rgba(154,205,50,.2);color:#b8dc70;border-color:rgba(154,205,50,.4)}.tag-label[data-tag=analytics]:hover{background-color:rgba(154,205,50,.3);color:#cde699;border-color:rgba(154,205,50,.6)}.tag-label[data-tag=gis]{background-color:rgba(135,206,235,.2);color:#c9e9f6;border-color:rgba(135,206,235,.4)}.tag-label[data-tag=gis]:hover{background-color:rgba(135,206,235,.3);color:#f4fbfd;border-color:rgba(135,206,235,.6)}.tag-label[data-tag=mapping]{background-color:rgba(135,206,250,.2);color:#d0ecfd;border-color:rgba(135,206,250,.4)}.tag-label[data-tag=mapping]:hover{background-color:rgba(135,206,250,.3);color:#fff;border-color:rgba(135,206,250,.6)}.tag-label[data-tag=arcgis]{background-color:rgba(0,191,255,.2);color:#4dd2ff;border-color:rgba(0,191,255,.4)}.tag-label[data-tag=arcgis]:hover{background-color:rgba(0,191,255,.3);color:#80dfff;border-color:rgba(0,191,255,.6)}.tag-label[data-tag=qgis]{background-color:rgba(30,144,255,.2);color:#6bb6ff;border-color:rgba(30,144,255,.4)}.tag-label[data-tag=qgis]:hover{background-color:rgba(30,144,255,.3);color:#9ecfff;border-color:rgba(30,144,255,.6)}.tag-label[data-tag=leaflet]{background-color:rgba(65,105,225,.2);color:#839deb;border-color:rgba(65,105,225,.4)}.tag-label[data-tag=leaflet]:hover{background-color:rgba(65,105,225,.3);color:#afc0f2;border-color:rgba(65,105,225,.6)}.tag-label[data-tag=mapbox]{background-color:rgba(0,0,255,.2);color:#4d4dff;border-color:rgba(0,0,255,.4)}.tag-label[data-tag=mapbox]:hover{background-color:rgba(0,0,255,.3);color:#8080ff;border-color:rgba(0,0,255,.6)}.tag-label[data-tag=geospatial]{background-color:rgba(70,130,180,.2);color:#7ba7cc;border-color:rgba(70,130,180,.4)}.tag-label[data-tag=geospatial]:hover{background-color:rgba(70,130,180,.3);color:#a0bfda;border-color:rgba(70,130,180,.6)}.tag-label[data-tag=cartography]{background-color:rgba(100,149,237,.2);color:#a9c4f5;border-color:rgba(100,149,237,.4)}.tag-label[data-tag=cartography]:hover{background-color:rgba(100,149,237,.3);color:#d6e3fa;border-color:rgba(100,149,237,.6)}.tag-label[data-tag=r]{background-color:rgba(221,160,221,.2);color:#f1d8f1;border-color:rgba(221,160,221,.4)}.tag-label[data-tag=r]:hover{background-color:rgba(221,160,221,.3);color:#fffeff;border-color:rgba(221,160,221,.6)}.tag-label[data-tag=rstudio]{background-color:rgba(218,112,214,.2);color:#eaade7;border-color:rgba(218,112,214,.4)}.tag-label[data-tag=rstudio]:hover{background-color:rgba(218,112,214,.3);color:#f4d5f3;border-color:rgba(218,112,214,.6)}.tag-label[data-tag=statistics]{background-color:rgba(186,85,211,.2);color:#d392e3;border-color:rgba(186,85,211,.4)}.tag-label[data-tag=statistics]:hover{background-color:rgba(186,85,211,.3);color:#e3baed;border-color:rgba(186,85,211,.6)}.tag-label[data-tag=visualization]{background-color:rgba(147,112,219,.2);color:#c1adea;border-color:rgba(147,112,219,.4)}.tag-label[data-tag=visualization]:hover{background-color:rgba(147,112,219,.3);color:#e0d6f5;border-color:rgba(147,112,219,.6)}.tag-label[data-tag=ggplot]{background-color:rgba(138,43,226,.2);color:#af6eeb;border-color:rgba(138,43,226,.4)}.tag-label[data-tag=ggplot]:hover{background-color:rgba(138,43,226,.3);color:#c89bf1;border-color:rgba(138,43,226,.6)}.tag-label[data-tag=shiny]{background-color:rgba(148,0,211,.2);color:#bd21ff;border-color:rgba(148,0,211,.4)}.tag-label[data-tag=shiny]:hover{background-color:rgba(148,0,211,.3);color:#cc54ff;border-color:rgba(148,0,211,.6)}.tag-label[data-tag=tidyverse]{background-color:rgba(139,0,139,.2);color:#d800d8;border-color:rgba(139,0,139,.4)}.tag-label[data-tag=tidyverse]:hover{background-color:rgba(139,0,139,.3);color:#ff0cff;border-color:rgba(139,0,139,.6)}.tag-label[data-tag=analysis]{background-color:rgba(128,0,128,.2);color:#cd00cd;border-color:rgba(128,0,128,.4)}.tag-label[data-tag=analysis]:hover{background-color:rgba(128,0,128,.3);color:#ff01ff;border-color:rgba(128,0,128,.6)}.tag-label[data-tag=database]{background-color:rgba(210,180,140,.2);color:#e8d8c3;border-color:rgba(210,180,140,.4)}.tag-label[data-tag=database]:hover{background-color:rgba(210,180,140,.3);color:#f6f0e8;border-color:rgba(210,180,140,.6)}.tag-label[data-tag=sql]{background-color:rgba(205,133,63,.2);color:#ddac7c;border-color:rgba(205,133,63,.4)}.tag-label[data-tag=sql]:hover{background-color:rgba(205,133,63,.3);color:#e7c5a4;border-color:rgba(205,133,63,.6)}.tag-label[data-tag=postgresql]{background-color:rgba(160,82,45,.2);color:#cd764d;border-color:rgba(160,82,45,.4)}.tag-label[data-tag=postgresql]:hover{background-color:rgba(160,82,45,.3);color:#d89574;border-color:rgba(160,82,45,.6)}.tag-label[data-tag=mysql]{background-color:rgba(139,69,19,.2);color:#ce661c;border-color:rgba(139,69,19,.4)}.tag-label[data-tag=mysql]:hover{background-color:rgba(139,69,19,.3);color:#e48139;border-color:rgba(139,69,19,.6)}.tag-label[data-tag=mongodb]{background-color:rgba(210,105,30,.2);color:#e79256;border-color:rgba(210,105,30,.4)}.tag-label[data-tag=mongodb]:hover{background-color:rgba(210,105,30,.3);color:#edaf82;border-color:rgba(210,105,30,.6)}.tag-label[data-tag=redis]{background-color:rgba(188,143,143,.2);color:#d9bfbf;border-color:rgba(188,143,143,.4)}.tag-label[data-tag=redis]:hover{background-color:rgba(188,143,143,.3);color:#ecdfdf;border-color:rgba(188,143,143,.6)}.tag-label[data-tag=sqlite]{background-color:rgba(244,164,96,.2);color:#f9cda8;border-color:rgba(244,164,96,.4)}.tag-label[data-tag=sqlite]:hover{background-color:rgba(244,164,96,.3);color:#fce8d7;border-color:rgba(244,164,96,.6)}.tag-label[data-tag=nosql]{background-color:rgba(222,184,135,.2);color:#efdcc3;border-color:rgba(222,184,135,.4)}.tag-label[data-tag=nosql]:hover{background-color:rgba(222,184,135,.3);color:#faf3eb;border-color:rgba(222,184,135,.6)}.tag-label[data-tag=project]{background-color:rgba(112,128,144,.2);color:#9ba6b1;border-color:rgba(112,128,144,.4)}.tag-label[data-tag=project]:hover{background-color:rgba(112,128,144,.3);color:#b8c0c8;border-color:rgba(112,128,144,.6)}.tag-label[data-tag=blog]{background-color:rgba(119,136,153,.2);color:#a3aeba;border-color:rgba(119,136,153,.4)}.tag-label[data-tag=blog]:hover{background-color:rgba(119,136,153,.3);color:#c0c8d0;border-color:rgba(119,136,153,.6)}.tag-label[data-tag=tutorial]{background-color:rgba(105,105,105,.2);color:#8f8f8f;border-color:rgba(105,105,105,.4)}.tag-label[data-tag=tutorial]:hover{background-color:rgba(105,105,105,.3);color:#a9a9a9;border-color:rgba(105,105,105,.6)}.tag-label[data-tag=documentation]{background-color:rgba(128,128,128,.2);color:#a6a6a6;border-color:rgba(128,128,128,.4)}.tag-label[data-tag=documentation]:hover{background-color:rgba(128,128,128,.3);color:silver;border-color:rgba(128,128,128,.6)}.tag-label[data-tag=guide]{background-color:rgba(169,169,169,.2);color:#cfcfcf;border-color:rgba(169,169,169,.4)}.tag-label[data-tag=guide]:hover{background-color:rgba(169,169,169,.3);color:#e9e9e9;border-color:rgba(169,169,169,.6)}.tag-label[data-tag=tips]{background-color:rgba(192,192,192,.2);color:#e6e6e6;border-color:rgba(192,192,192,.4)}.tag-label[data-tag=tips]:hover{background-color:rgba(192,192,192,.3);color:#fff;border-color:rgba(192,192,192,.6)}.tag-label[data-tag=howto]{background-color:rgba(211,211,211,.2);color:#f9f9f9;border-color:rgba(211,211,211,.4)}.tag-label[data-tag=howto]:hover{background-color:rgba(211,211,211,.3);color:#fff;border-color:rgba(211,211,211,.6)}.tag-label[data-tag=reference]{background-color:rgba(220,220,220,.2);color:#fff;border-color:rgba(220,220,220,.4)}.tag-label[data-tag=reference]:hover{background-color:rgba(220,220,220,.3);color:#fff;border-color:rgba(220,220,220,.6)}.tag-label[data-tag=open-source]{background-color:rgba(32,178,170,.2);color:#42ddd4;border-color:rgba(32,178,170,.4)}.tag-label[data-tag=open-source]:hover{background-color:rgba(32,178,170,.3);color:#6de5de;border-color:rgba(32,178,170,.6)}.tag-label[data-tag=github]{background-color:rgba(47,79,79,.2);color:#4c7f7f;border-color:rgba(47,79,79,.4)}.tag-label[data-tag=github]:hover{background-color:rgba(47,79,79,.3);color:#5f9f9f;border-color:rgba(47,79,79,.6)}.tag-label[data-tag=git]{background-color:rgba(0,139,139,.2);color:#00d8d8;border-color:rgba(0,139,139,.4)}.tag-label[data-tag=git]:hover{background-color:rgba(0,139,139,.3);color:#0cffff;border-color:rgba(0,139,139,.6)}.tag-label[data-tag=docker]{background-color:rgba(95,158,160,.2);color:#8fbbbd;border-color:rgba(95,158,160,.4)}.tag-label[data-tag=docker]:hover{background-color:rgba(95,158,160,.3);color:#afcfd0;border-color:rgba(95,158,160,.6)}.tag-label[data-tag=kubernetes]{background-color:rgba(70,130,180,.2);color:#7ba7cc;border-color:rgba(70,130,180,.4)}.tag-label[data-tag=kubernetes]:hover{background-color:rgba(70,130,180,.3);color:#a0bfda;border-color:rgba(70,130,180,.6)}.tag-label[data-tag=aws]{background-color:rgba(255,140,0,.2);color:#ffaf4d;border-color:rgba(255,140,0,.4)}.tag-label[data-tag=aws]:hover{background-color:rgba(255,140,0,.3);color:#ffc680;border-color:rgba(255,140,0,.6)}.tag-label[data-tag=azure]{background-color:rgba(0,0,205,.2);color:#1b1bff;border-color:rgba(0,0,205,.4)}.tag-label[data-tag=azure]:hover{background-color:rgba(0,0,205,.3);color:#4e4eff;border-color:rgba(0,0,205,.6)}.tag-label[data-tag=gcp]{background-color:rgba(66,133,244,.2);color:#8ab4f8;border-color:rgba(66,133,244,.4)}.tag-label[data-tag=gcp]:hover{background-color:rgba(66,133,244,.3);color:#bad3fb;border-color:rgba(66,133,244,.6)}.tag-label:not([data-tag]){background-color:rgba(200,200,200,.2);color:#ccc;border-color:rgba(200,200,200,.4)}.tag-label:not([data-tag]):hover{background-color:rgba(200,200,200,.3);color:#fff;border-color:rgba(200,200,200,.6)}}.tag-label,.tag-cloud a{display:inline-block;padding:4px 10px;margin:3px;border-radius:4px;text-decoration:none;font-size:.9em;font-weight:500;transition:background-color .3s ease,transform .2s ease,box-shadow .2s ease}.tag-label:hover,.tag-cloud a:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(0,0,0,.1)}.tag-label[data-tag],.tag-cloud a[data-tag]{background-color:#f0f0f0;color:#666;border:1px solid #ddd}.tag-label[data-tag]:hover,.tag-cloud a[data-tag]:hover{background-color:#e8e8e8;color:#444}.tag-cloud{margin:2rem 0;padding:1rem;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.tag-cloud-item{display:inline-block;padding:6px 12px;border-radius:15px;text-decoration:none;font-size:14px !important;line-height:1.4;transition:all .2s ease;background-color:#f0f0f0;color:#666;border:1px solid #ddd}.tag-cloud-item:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(0,0,0,.1);background-color:#e8e8e8;color:#444}.dark-theme .tag-cloud-item{background-color:rgba(255,255,255,.1);color:#ddd;border-color:rgba(255,255,255,.2)}.dark-theme .tag-cloud-item:hover{background-color:rgba(255,255,255,.15);color:#fff}.profile-pic-container,.project img{width:200px;height:200px;border-radius:50%;overflow:hidden;margin:10px;position:relative;transition:transform .3s ease,box-shadow .3s ease}.profile-pic-container:hover,.project img:hover{transform:scale(1.05);box-shadow:0 5px 15px rgba(0,0,0,.3)}.profile-pic,.project img{width:100%;height:100%;object-fit:cover}.image-row{display:flex;justify-content:center;flex-wrap:wrap}.profile-pic-container .hover-text{position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.7);color:#fff;opacity:0;transition:opacity .3s ease;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:10px}.profile-pic-container .hover-text h3{margin:0 0 10px 0}.profile-pic-container .hover-text p{font-size:.9em;margin:0}.profile-pic-container:hover .hover-text{opacity:1}.project{display:flex;align-items:flex-start;gap:20px;margin-bottom:30px;padding:20px;background-color:rgba(255,255,255,.1);border-radius:10px;transition:background-color .3s ease}.project:hover{background-color:rgba(255,255,255,.2)}.thumbnail-container{position:relative;flex:0 0 240px;height:135px;overflow:hidden;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1)}.thumbnail-container a{display:block;width:100%;height:100%}.thumbnail-container img.rounded{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.thumbnail-container:hover img.rounded{transform:scale(1.05)}.project-info{flex:1;min-width:0}.project-info h2{font-size:2.5em !important;font-weight:700 !important;margin:0 0 15px 0;line-height:1.2}.project-info h2 a{text-decoration:none;color:inherit}.project-info h2 a:hover{text-decoration:underline}.project-info .tags-and-links{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}.project-info .post-tags{display:flex;align-items:center;gap:8px}.project-info .github-link{display:flex;align-items:center;font-size:1.2em;margin-left:5px}.dark-theme .project{background-color:rgba(255,255,255,.05)}.dark-theme .project:hover{background-color:rgba(255,255,255,.1)}.dark-theme .thumbnail-container .image-preview{background-color:#222;border:1px solid rgba(255,255,255,.1)}@media(max-width: 768px){.project{flex-direction:column;align-items:center;text-align:center}.thumbnail-container{flex:0 0 auto;width:100%;max-width:320px;height:180px;margin:0 0 15px 0}.project-info{width:100%}}#github-stats{text-align:center;margin-bottom:2rem}#github-stats img{max-width:100%;height:auto;box-shadow:0 4px 8px rgba(0,0,0,.1);border-radius:10px}.social-links{display:flex;justify-content:space-around;flex-wrap:wrap;margin:20px 0}.social-links a{margin:10px;text-decoration:none;color:#333;transition:color .3s ease}.social-links a:hover{color:#007bff}.button-container{text-align:center;margin:1rem 0}#show-all-posts{cursor:pointer;border:none}#show-all-posts:hover{cursor:pointer}.site-title{font-size:40px;font-weight:600;letter-spacing:-0.5px;color:inherit;text-align:center;margin:2rem 0 1rem;transition:color .3s ease;text-decoration:none;display:inline-block;position:relative}.site-title:hover{text-decoration:none;color:#007bff}.site-title::after{content:"";position:absolute;width:0;height:2px;bottom:-4px;left:50%;background-color:currentColor;transition:width .3s ease,left .3s ease}.site-title:hover::after{width:100%;left:0}@media screen and (max-width: 600px){.site-title{text-align:center;line-height:1.2;font-size:32px}}.dark-theme .site-title:hover{color:#3cf}.thumbnail-container{position:relative;width:240px;height:135px;margin-right:20px;overflow:hidden;display:flex;justify-content:center;align-items:center}.thumbnail-container a{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.thumbnail-container img.rounded{width:100%;height:100%;border-radius:8px;object-fit:cover;transition:transform .3s ease;box-shadow:0 2px 8px rgba(0,0,0,.1)}.thumbnail-container:hover img.rounded{transform:scale(1.05)}.thumbnail-container .image-preview{position:absolute;top:50%;left:100%;transform:translateY(-50%);width:400px;height:auto;background-color:#fff;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);opacity:0;visibility:hidden;transition:all .3s ease;z-index:100;padding:8px;margin-left:10px}.thumbnail-container .image-preview img{width:100%;height:auto;border-radius:4px;object-fit:contain}.thumbnail-container:hover .image-preview{opacity:1;visibility:visible}@media(max-width: 768px){.thumbnail-container{width:100%;max-width:320px;height:180px;margin:0 auto 15px auto}.thumbnail-container .image-preview{width:90vw;left:50%;top:120%;transform:translateX(-50%);margin-left:0}}.project .thumbnail-container{flex-shrink:0}@media(max-width: 768px){.project .thumbnail-container{margin-right:0;margin-bottom:15px}.project .thumbnail-container .image-preview{left:50%;top:100%;transform:translateX(-50%);margin-top:10px}}.bsky-icon{display:inline-block;width:1em;height:1em;background-image:url("/assets/images/bluesky-icon.svg");background-size:contain;background-repeat:no-repeat;vertical-align:middle;margin-right:.25em}@media(max-width: 768px){body .site-header{padding:10px 0}body .site-header .wrapper{flex-direction:row;justify-content:space-between;align-items:center;gap:15px}body .site-header .site-header-content{flex:1;justify-content:center;gap:20px;align-items:center}body .site-header .site-nav{float:none !important;display:flex !important;gap:15px;align-items:center}body .site-header .site-nav .page-link{font-size:.9em;padding:0 10px;margin:0}body .site-header #theme-toggle{padding:.2em;font-size:.9em;line-height:1}}@media(max-width: 480px){body .site-header .wrapper{flex-direction:column;gap:10px}body .site-header .site-header-content{flex-direction:column;width:100%;text-align:center}body .site-header .site-nav{justify-content:center;width:100%;gap:25px;padding:10px 0}body .site-header .site-nav .page-link{padding:5px 15px;font-size:1em}body .site-header #theme-toggle{margin:0}}.title-group{text-align:center;margin-bottom:1rem}.site-title{margin-bottom:0}.site-subtitle{font-size:.9rem;color:#666;margin-top:.25rem;font-weight:300;letter-spacing:.5px}.dark-theme .site-subtitle{color:#999}@media screen and (max-width: 600px){.site-subtitle{font-size:.8rem}}.tag-info{background:rgba(var(--primary-color-rgb, 0, 123, 255), 0.1);border-left:4px solid var(--primary-color, #007bff);padding:1rem;margin:1rem 0;border-radius:0 4px 4px 0}.tag-info p{margin:0;font-size:1.1rem}.tag-info .tag-label{font-size:1rem;margin-left:.25rem}.tag-cloud{text-align:center;margin:2rem 0}.tag-cloud .tag-label{display:inline-block;margin:.25rem;font-size:1rem}.tag-cloud .tag-label.tag-size-1{font-size:.8rem}.tag-cloud .tag-label.tag-size-2{font-size:.9rem}.tag-cloud .tag-label.tag-size-3{font-size:1rem}.tag-cloud .tag-label.tag-size-4{font-size:1.1rem}.tag-cloud .tag-label.tag-size-5{font-size:1.2rem}@media(prefers-color-scheme: dark){.tag-info{background:rgba(var(--primary-color-rgb, 0, 123, 255), 0.2);border-left-color:rgba(var(--primary-color, #007bff), 0.8)}}.tag-list{margin:2rem 0}.tag-list .tag-item{margin-bottom:2rem;padding:1rem;border:1px solid #e1e4e8;border-radius:6px;background:#f8f9fa}.tag-list .tag-item h3{margin:0 0 .5rem 0;display:flex;align-items:center;gap:.5rem}.tag-list .tag-item h3 .tag-count{font-size:.9rem;color:#6a737d;font-weight:normal}.tag-list .tag-item .tag-posts{list-style:none;padding:0;margin:0}.tag-list .tag-item .tag-posts li{display:flex;justify-content:space-between;align-items:center;padding:.25rem 0;border-bottom:1px solid #e1e4e8}.tag-list .tag-item .tag-posts li:last-child{border-bottom:none}.tag-list .tag-item .tag-posts li .post-date{font-size:.8rem;color:#6a737d}.tag-cloud{text-align:center;margin:2rem 0;padding:2rem;background:linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);border-radius:8px}.tag-cloud .tag-label{display:inline-block;margin:.25rem;transition:all .3s ease}.tag-cloud .tag-label:hover{transform:scale(1.1)}.tag-cloud .tag-label.tag-size-1{font-size:.8rem;opacity:.7}.tag-cloud .tag-label.tag-size-2{font-size:.9rem;opacity:.8}.tag-cloud .tag-label.tag-size-3{font-size:1rem;opacity:.9}.tag-cloud .tag-label.tag-size-4{font-size:1.1rem;opacity:1}.tag-cloud .tag-label.tag-size-5{font-size:1.2rem;opacity:1;font-weight:600}@media(prefers-color-scheme: dark){.tag-list .tag-item{background:#21262d;border-color:#30363d}.tag-list .tag-item .tag-count,.tag-list .tag-item .post-date{color:#8b949e}.tag-list .tag-item .tag-posts li{border-bottom-color:#30363d}.tag-cloud{background:linear-gradient(135deg, #21262d 0%, #30363d 100%)}}.dark-theme code{background-color:rgba(255,255,255,.1);color:#f8f8f2;border:1px solid rgba(255,255,255,.2)}.dark-theme pre{background-color:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:#f8f8f2}.dark-theme pre code{background-color:rgba(0,0,0,0);border:none;color:inherit}.dark-theme .highlight{background:rgba(255,255,255,.05)}.highlighter-rouge .dark-theme .highlight{background:rgba(255,255,255,.08)}.dark-theme .highlight .c{color:#75715e;font-style:italic}.dark-theme .highlight .err{color:#f92672;background-color:rgba(0,0,0,0)}.dark-theme .highlight .k{color:#66d9ef;font-weight:bold}.dark-theme .highlight .o{color:#f8f8f2;font-weight:bold}.dark-theme .highlight .cm{color:#75715e;font-style:italic}.dark-theme .highlight .cp{color:#75715e;font-weight:bold}.dark-theme .highlight .c1{color:#75715e;font-style:italic}.dark-theme .highlight .cs{color:#75715e;font-weight:bold;font-style:italic}.dark-theme .highlight .gd{color:#f92672;background-color:rgba(0,0,0,0)}.dark-theme .highlight .gd .x{color:#f92672;background-color:rgba(0,0,0,0)}.dark-theme .highlight .ge{font-style:italic}.dark-theme .highlight .gr{color:#f92672}.dark-theme .highlight .gh{color:#75715e}.dark-theme .highlight .gi{color:#a6e22e;background-color:rgba(0,0,0,0)}.dark-theme .highlight .gi .x{color:#a6e22e;background-color:rgba(0,0,0,0)}.dark-theme .highlight .go{color:#888}.dark-theme .highlight .gp{color:#555}.dark-theme .highlight .gs{font-weight:bold}.dark-theme .highlight .gu{color:#75715e}.dark-theme .highlight .gt{color:#f92672}.dark-theme .highlight .kc{color:#66d9ef;font-weight:bold}.dark-theme .highlight .kd{color:#66d9ef;font-weight:bold}.dark-theme .highlight .kp{color:#66d9ef;font-weight:bold}.dark-theme .highlight .kr{color:#66d9ef;font-weight:bold}.dark-theme .highlight .kt{color:#66d9ef;font-weight:bold}.dark-theme .highlight .m{color:#ae81ff}.dark-theme .highlight .s{color:#e6db74}.dark-theme .highlight .na{color:#a6e22e}.dark-theme .highlight .nb{color:#f8f8f2}.dark-theme .highlight .nc{color:#a6e22e;font-weight:bold}.dark-theme .highlight .no{color:#66d9ef}.dark-theme .highlight .ni{color:#f8f8f2}.dark-theme .highlight .ne{color:#a6e22e;font-weight:bold}.dark-theme .highlight .nf{color:#a6e22e;font-weight:bold}.dark-theme .highlight .nn{color:#f8f8f2}.dark-theme .highlight .nt{color:#f92672}.dark-theme .highlight .nv{color:#f8f8f2}.dark-theme .highlight .ow{color:#f92672;font-weight:bold}.dark-theme .highlight .w{color:#f8f8f2}.dark-theme .highlight .mf{color:#ae81ff}.dark-theme .highlight .mh{color:#ae81ff}.dark-theme .highlight .mi{color:#ae81ff}.dark-theme .highlight .mo{color:#ae81ff}.dark-theme .highlight .sb{color:#e6db74}.dark-theme .highlight .sc{color:#e6db74}.dark-theme .highlight .sd{color:#e6db74}.dark-theme .highlight .s2{color:#e6db74}.dark-theme .highlight .se{color:#ae81ff}.dark-theme .highlight .sh{color:#e6db74}.dark-theme .highlight .si{color:#e6db74}.dark-theme .highlight .sx{color:#e6db74}.dark-theme .highlight .sr{color:#e6db74}.dark-theme .highlight .s1{color:#e6db74}.dark-theme .highlight .ss{color:#ae81ff}.dark-theme .highlight .bp{color:#f8f8f2}.dark-theme .highlight .vc{color:#f8f8f2}.dark-theme .highlight .vg{color:#f8f8f2}.dark-theme .highlight .vi{color:#f8f8f2}.dark-theme .highlight .il{color:#ae81ff}.dark-theme blockquote{color:#ccc;border-left:4px solid rgba(255,255,255,.3)}.dark-theme table{color:#ddd;border:1px solid rgba(255,255,255,.2)}.dark-theme table tr:nth-child(even){background-color:rgba(255,255,255,.05)}.dark-theme table th{background-color:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:#fff}.dark-theme table td{border:1px solid rgba(255,255,255,.1)}@media(prefers-color-scheme: dark){code{background-color:rgba(255,255,255,.1);color:#f8f8f2;border:1px solid rgba(255,255,255,.2)}pre{background-color:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);color:#f8f8f2}pre code{background-color:rgba(0,0,0,0);border:none;color:inherit}.highlight{background:rgba(255,255,255,.05)}.highlighter-rouge .highlight{background:rgba(255,255,255,.08)}.highlight .c{color:#75715e;font-style:italic}.highlight .err{color:#f92672;background-color:rgba(0,0,0,0)}.highlight .k{color:#66d9ef;font-weight:bold}.highlight .o{color:#f8f8f2;font-weight:bold}.highlight .cm{color:#75715e;font-style:italic}.highlight .cp{color:#75715e;font-weight:bold}.highlight .c1{color:#75715e;font-style:italic}.highlight .cs{color:#75715e;font-weight:bold;font-style:italic}.highlight .gd{color:#f92672;background-color:rgba(0,0,0,0)}.highlight .gd .x{color:#f92672;background-color:rgba(0,0,0,0)}.highlight .ge{font-style:italic}.highlight .gr{color:#f92672}.highlight .gh{color:#75715e}.highlight .gi{color:#a6e22e;background-color:rgba(0,0,0,0)}.highlight .gi .x{color:#a6e22e;background-color:rgba(0,0,0,0)}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#75715e}.highlight .gt{color:#f92672}.highlight .kc{color:#66d9ef;font-weight:bold}.highlight .kd{color:#66d9ef;font-weight:bold}.highlight .kp{color:#66d9ef;font-weight:bold}.highlight .kr{color:#66d9ef;font-weight:bold}.highlight .kt{color:#66d9ef;font-weight:bold}.highlight .m{color:#ae81ff}.highlight .s{color:#e6db74}.highlight .na{color:#a6e22e}.highlight .nb{color:#f8f8f2}.highlight .nc{color:#a6e22e;font-weight:bold}.highlight .no{color:#66d9ef}.highlight .ni{color:#f8f8f2}.highlight .ne{color:#a6e22e;font-weight:bold}.highlight .nf{color:#a6e22e;font-weight:bold}.highlight .nn{color:#f8f8f2}.highlight .nt{color:#f92672}.highlight .nv{color:#f8f8f2}.highlight .ow{color:#f92672;font-weight:bold}.highlight .w{color:#f8f8f2}.highlight .mf{color:#ae81ff}.highlight .mh{color:#ae81ff}.highlight .mi{color:#ae81ff}.highlight .mo{color:#ae81ff}.highlight .sb{color:#e6db74}.highlight .sc{color:#e6db74}.highlight .sd{color:#e6db74}.highlight .s2{color:#e6db74}.highlight .se{color:#ae81ff}.highlight .sh{color:#e6db74}.highlight .si{color:#e6db74}.highlight .sx{color:#e6db74}.highlight .sr{color:#e6db74}.highlight .s1{color:#e6db74}.highlight .ss{color:#ae81ff}.highlight .bp{color:#f8f8f2}.highlight .vc{color:#f8f8f2}.highlight .vg{color:#f8f8f2}.highlight .vi{color:#f8f8f2}.highlight .il{color:#ae81ff}}body,h1,h2,h3,h4,h5,h6,p,blockquote,pre,hr,dl,dd,ol,ul,figure{margin:0;padding:0}body{font:400 16px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:#333;background-color:light-theme-background-color;-webkit-text-size-adjust:100%;-webkit-font-feature-settings:"kern" 1;-moz-font-feature-settings:"kern" 1;-o-font-feature-settings:"kern" 1;font-feature-settings:"kern" 1;font-kerning:normal;display:flex;min-height:100vh;flex-direction:column}h1,h2,h3,h4,h5,h6,p,blockquote,pre,ul,ol,dl,figure,.highlight{margin-bottom:15px}main{display:block}img{max-width:100%;vertical-align:middle}figure>img{display:block}figcaption{font-size:14px}ul,ol{margin-left:30px}li>ul,li>ol{margin-bottom:0}h1,h2,h3,h4,h5,h6{font-weight:400}a{color:#007bff;text-decoration:none}a:visited{color:#0056b3}a:hover{color:#333;text-decoration:underline}.social-media-list a:hover{text-decoration:none}.social-media-list a:hover .username{text-decoration:underline}blockquote{color:#828282;border-left:4px solid #e8e8e8;padding-left:15px;font-size:18px;letter-spacing:-1px;font-style:italic}blockquote>:last-child{margin-bottom:0}pre,code{font-size:15px;border:1px solid #e8e8e8;border-radius:3px;background-color:#eef}code{padding:1px 5px}pre{padding:8px 12px;overflow-x:auto}pre>code{border:0;padding-right:0;padding-left:0}.wrapper{max-width:-webkit-calc(800px - (30px * 2));max-width:calc(800px - 30px*2);margin-right:auto;margin-left:auto;padding-right:30px;padding-left:30px}@media screen and (max-width: 800px){.wrapper{max-width:-webkit-calc(800px - (30px));max-width:calc(800px - (30px));padding-right:15px;padding-left:15px}}.footer-col-wrapper:after,.wrapper:after{content:"";display:table;clear:both}.svg-icon{width:16px;height:16px;display:inline-block;fill:#828282;padding-right:5px;vertical-align:text-top}.social-media-list li+li{padding-top:5px}table{margin-bottom:30px;width:100%;text-align:left;color:#616161;border-collapse:collapse;border:1px solid #e8e8e8}table tr:nth-child(even){background-color:#f7f7f7}table th,table td{padding:10px 15px}table th{background-color:#f0f0f0;border:1px solid #dedede;border-bottom-color:#c9c9c9}table td{border:1px solid #e8e8e8}.site-footer{border-top:1px solid #e8e8e8;padding:30px 0}.footer-heading{font-size:18px;margin-bottom:15px}.contact-list,.social-media-list{list-style:none;margin-left:0}.footer-col-wrapper{font-size:15px;color:#828282;margin-left:-15px}.footer-col{float:left;margin-bottom:15px;padding-left:15px}.footer-col-1{width:-webkit-calc(35% - (30px / 2));width:calc(35% - 30px/2)}.footer-col-2{width:-webkit-calc(20% - (30px / 2));width:calc(20% - 30px/2)}.footer-col-3{width:-webkit-calc(45% - (30px / 2));width:calc(45% - 30px/2)}@media screen and (max-width: 800px){.footer-col-1,.footer-col-2{width:-webkit-calc(50% - (30px / 2));width:calc(50% - 30px/2)}.footer-col-3{width:-webkit-calc(100% - (30px / 2));width:calc(100% - 30px/2)}}@media screen and (max-width: 600px){.footer-col{float:none;width:-webkit-calc(100% - (30px / 2));width:calc(100% - 30px/2)}}.page-content{padding:30px 0;flex:1}.page-heading{font-size:32px}.post-list-heading{font-size:28px}.post-list{margin-left:0;list-style:none}.post-list>li{margin-bottom:30px}.post-meta{display:block;font-size:14px;color:#828282;margin-top:.5em}.post-link{display:block;font-size:24px}.post-header{margin-bottom:30px}.post-title{font-size:42px;letter-spacing:-1px;line-height:1}@media screen and (max-width: 800px){.post-title{font-size:36px}}.post-content{margin-bottom:30px}.post-content h2{font-size:32px}@media screen and (max-width: 800px){.post-content h2{font-size:28px}}.post-content h3{font-size:26px}@media screen and (max-width: 800px){.post-content h3{font-size:22px}}.post-content h4{font-size:20px}@media screen and (max-width: 800px){.post-content h4{font-size:18px}}@media screen and (max-width: 600px){.site-header-content{display:flex;flex-direction:column;align-items:center;gap:5px}}.image-preview{position:absolute;top:50%;left:100%;transform:translateY(-50%);width:400px;height:auto;background-color:#fff;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);opacity:0;visibility:hidden;transition:all .3s ease;z-index:100;padding:8px}.image-preview img{width:100%;height:auto;border-radius:4px}.highlight{background:#fff}.highlighter-rouge .highlight{background:#eef}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:teal}.highlight .nb{color:#0086b3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:teal}.highlight .ni{color:purple}.highlight .ne{color:#900;font-weight:bold}.highlight .nf{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}