:root{--transition-speed:0.3s;--transition-timing:ease;--content-padding:50px;--font-size-base:14px;--line-height-base:23px;--sidebar-width:150px;--container-max-width:880px;--smooth-bezier:cubic-bezier(0.4, 0, 0.2, 1);--text-color:rgb(76, 80, 90);--menu-unselected:rgb(141, 149, 160);--menu-selected:rgb(31, 33, 37);--menu-hover:rgb(60, 65, 72);--border-color:#eee;--selection-color:rgb(226, 229, 231);--dot-color:rgb(180, 185, 192);--project-marker-color:#aaa;--hover-color:rgb(44, 46, 53);--bg-color:#ffffff;--code-bg:#f7f7f7}[data-theme=dark]{--text-color:rgb(200, 200, 200);--menu-unselected:rgb(130, 130, 130);--menu-selected:rgb(220, 220, 220);--menu-hover:rgb(180, 180, 180);--border-color:#333;--selection-color:rgb(55, 55, 55);--dot-color:rgb(100, 100, 100);--project-marker-color:#777;--hover-color:rgb(220, 220, 220);--bg-color:#1a1a1a;--code-bg:#2d2d2d}@font-face{font-family:main;src:url(/fonts/main.woff2)format('woff2');font-weight:400;font-style:normal}@font-face{font-family:menu;src:url(/fonts/menu.woff2)format('woff2');font-weight:400;font-style:normal}@font-face{font-family:code;src:url(/fonts/code.woff2)format('woff2');font-weight:400;font-style:normal}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background-color:var(--bg-color);color:var(--text-color);line-height:1.6;margin:0;padding:50px 0 0}.container{display:flex;max-width:var(--container-max-width);margin:0 auto;min-height:350px;padding-left:20px;padding-right:20px}.sidebar{width:var(--sidebar-width);flex-shrink:0;padding-right:var(--content-padding);border-right:1px solid var(--border-color);min-height:350px}.content{font-family:main;flex:1;padding:0 var(--content-padding);overflow-x:hidden}a{color:var(--text-color)}.page,.about,.post{font-size:var(--font-size-base);letter-spacing:.119px;line-height:var(--line-height-base);word-spacing:-.56px;-webkit-font-smoothing:antialiased;font-variation-settings:"opsz" 15,"wght" 440;padding-bottom:4em}::selection,::-moz-selection{background-color:var(--selection-color)}.transition-all{transition:background-color var(--transition-speed)var(--transition-timing),color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing),opacity var(--transition-speed)var(--transition-timing),transform var(--transition-speed)var(--transition-timing)}.nav-links{font-family:menu;list-style:none;padding:0;margin:0;text-align:right}.nav-links li{margin-bottom:3px}.nav-links a{color:var(--menu-unselected);display:inline-block;font-size:16px;transition:color var(--transition-speed)var(--transition-timing);text-decoration:none}.nav-links a:hover{color:var(--menu-hover)}.nav-links a.active{color:var(--menu-selected)}.posts-list{list-style:none}.content>.posts-list{padding-left:0;margin-left:0}.post-item{margin-bottom:0;line-height:1.8em;transition:opacity .3s ease,transform .3s ease}.post-item.hidden{display:none;opacity:0;transform:translateY(10px)}.post-link{display:flex;align-items:baseline;text-decoration:none;color:var(--text-color);-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.post-link .post-date,.post-link .dots{transition:color .2s ease-out;color:var(--dot-color)}.post-link .dots{opacity:.99}.post-title{color:inherit}.post-date{margin-left:auto;padding-right:20px;white-space:nowrap}.dots{flex:1;margin:0 10px;height:1em;align-self:center;min-width:8px;background-image:url("data:image/svg+xml,%3Csvg width='3' height='3' viewBox='0 0 3 3' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='1.5' cy='1.5' r='1' fill='rgb(180, 185, 192)'/%3E%3C/svg%3E");background-size:8px 2px;background-position:100%;background-repeat:repeat-x}.post-link:hover{color:var(--hover-color)}.post-link:hover .post-date,.post-link:hover .dots{transition:none;color:var(--hover-color);opacity:1}.post-link:hover .dots{background-image:url("data:image/svg+xml,%3Csvg width='3' height='3' viewBox='0 0 3 3' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='1.5' cy='1.5' r='1' fill='rgb(44, 46, 53)'/%3E%3C/svg%3E")}[data-theme=dark] .post-link:hover .dots{background-image:url("data:image/svg+xml,%3Csvg width='3' height='3' viewBox='0 0 3 3' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='1.5' cy='1.5' r='1' fill='rgb(220, 220, 220)'/%3E%3C/svg%3E")}.content>*:first-child,.content>h1:first-child,.content>h2:first-child,.content>h3:first-child,.content>h4:first-child,.content>.posts-list,.content>*:first-child>*:first-child{margin-top:0!important;padding-top:0!important}.content ul,.content ol{padding-left:30px;margin-left:0}.content ul ul,.content ul ol,.content ol ul,.content ol ol{padding-left:15px;margin-left:0}.content img{max-width:100%;max-height:300px;height:auto;display:block;margin:1em auto}.responsive-video{margin:2em auto;width:var(--desktop-width,100%);max-width:100%}.responsive-video iframe{width:100%;height:var(--mobile-height,250px);border:none;display:block}@media(max-width:600px){.responsive-video{width:var(--mobile-width,100%)}}@media(min-width:601px){.responsive-video iframe{height:var(--desktop-height,315px)}}.content h1{line-height:1.2;margin-bottom:20px;word-wrap:break-word;max-width:100%}.series-overview{padding:16px;margin:1.5em 0;border-radius:10px;background:linear-gradient(135deg,rgba(59,130,246,.1),rgba(147,197,253,8%));backdrop-filter:blur(12px);border:1px solid rgba(59,130,246,.2);box-shadow:0 3px 12px rgba(59,130,246,6%);transition:all .3s var(--smooth-bezier);position:relative;font-size:13px;display:flex;flex-direction:column}.series-overview::before{content:'';width:16px;height:16px;background:linear-gradient(135deg,#3B82F6,#60A5FA,#93C5FD);clip-path:polygon(50% 0%,0% 50%,50% 100%,100% 50%);position:absolute;top:16px;left:16px;box-shadow:0 2px 8px rgba(59,130,246,.3);z-index:2}.series-overview h3,.series-overview h4{margin:0 0 8px 26px;font-weight:500;color:var(--text-color);font-size:13px;position:relative;z-index:2;line-height:16px}.series-overview>p{margin-left:26px;margin-bottom:8px;color:var(--text-color);position:relative;z-index:2;font-size:13px;line-height:1.5}.series-overview a{text-decoration:none;color:var(--text-color);transition:color .3s ease}.series-overview ul{list-style:none;padding-left:12px;margin-left:0;margin-bottom:0;position:relative;z-index:2}.series-overview li{line-height:1.5;margin-bottom:4px;font-size:13px}.series-overview li:last-child{margin-bottom:0}.series-overview li a{display:inline-flex;align-items:baseline}.series-overview li a:hover{color:rgba(59,130,246,.8)}.series-overview li strong a{color:rgba(59,130,246,.9);font-weight:600}.series-overview li strong a:hover{color:rgba(59,130,246,.9)}[data-theme=dark] .series-overview{background:linear-gradient(135deg,rgba(59,130,246,8%),rgba(147,197,253,5%));border:1px solid rgba(59,130,246,.15);box-shadow:0 3px 12px rgba(0,0,0,.15)}[data-theme=dark] .series-overview li strong a{color:rgba(147,197,253,.9)}[data-theme=dark] .series-overview li strong a:hover{color:rgba(147,197,253,.9)}hr{border:none;height:1px;background:linear-gradient(to right,transparent,var(--dot-color),transparent);margin:2em 0}.article-disclaimer{position:relative;margin:1.4em 0 1.8em;padding:1.05em 1.15em 1.05em 1.35em;background:linear-gradient(135deg,rgba(249,115,22,.105),rgba(253,186,116,.045)),color-mix(in srgb,var(--code-bg) 22%,var(--bg-color) 78%);border:1px solid rgba(249,115,22,.24);border-left-color:rgba(234,88,12,.66);border-radius:8px;box-shadow:0 3px 14px rgba(249,115,22,.075);overflow:hidden;transition:background-color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing),box-shadow var(--transition-speed)var(--transition-timing)}.article-disclaimer::before{content:'';position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(to bottom,#EA580C,#FDBA74)}.disclaimer-title{display:inline-flex;align-items:center;gap:.55em;margin-bottom:.45em;color:var(--text-color);font-family:inherit;font-size:.86em;font-variation-settings:"opsz" 15,"wght" 560;font-weight:600;line-height:1.25}.disclaimer-title::before{content:'';width:.58em;height:.58em;border-radius:50%;background:#ea580c;box-shadow:0 0 0 4px rgba(249,115,22,.14);flex:none}.disclaimer-content{color:var(--text-color);font-size:.98em;line-height:1.62}.disclaimer-content>:first-child{margin-top:0}.disclaimer-content>:last-child{margin-bottom:0}[data-theme=dark] .article-disclaimer{background:linear-gradient(135deg,rgba(249,115,22,.115),rgba(253,186,116,.045)),color-mix(in srgb,var(--code-bg) 34%,var(--bg-color) 66%);border-color:rgba(249,115,22,.22);border-left-color:rgba(253,186,116,.5);box-shadow:0 3px 14px rgba(0,0,0,.14)}[data-theme=dark] .disclaimer-title::before{background:#fdba74;box-shadow:0 0 0 4px rgba(253,186,116,.12)}pre{background-color:var(--code-bg);padding:13px;border-radius:5px;overflow-x:auto;margin:0;width:100%;box-sizing:border-box;border:1px solid var(--border-color)}pre code{font-family:code;background-color:transparent;padding:0;border-radius:0;font-size:13px;line-height:1.5;white-space:pre;display:inline-block}code{background-color:var(--code-bg);color:var(--text-color);padding:2px 4px;border-radius:3px}.filter-btn{background:var(--bg-color);border:1px solid var(--border-color);padding:5px 12px;border-radius:15px;font-family:menu;font-size:13px;color:var(--menu-unselected);transition:all .2s ease;cursor:pointer}.filter-btn:hover{color:var(--menu-hover);border-color:var(--menu-hover)}[data-theme=light] .filter-btn.active{background-color:var(--menu-selected);color:var(--bg-color);border-color:var(--menu-selected)}[data-theme=dark] .filter-btn.active{background-color:var(--menu-hover);color:var(--bg-color);border-color:var(--menu-hover)}.post-metadata{display:flex;align-items:center;gap:15px;margin-bottom:20px}.lang-dropdown{position:relative;display:inline-block}.lang-dropdown::after{content:'';position:absolute;top:100%;left:0;right:0;height:4px}.lang-current{background:var(--bg-color);border:1px solid var(--border-color);border-radius:4px;padding:4px 8px;cursor:pointer;font-family:main;font-size:14px;color:var(--text-color);display:flex;align-items:center;gap:6px;transition:all .2s ease;line-height:1.3em}.lang-current::after{content:"⌃";transform:rotate(180deg);display:inline-flex;align-items:center;font-size:12px;opacity:.5;margin-top:-2px}.lang-current:hover{background-color:var(--selection-color)}.lang-options{display:none;position:absolute;right:0;top:100%;margin-top:4px;min-width:120px;background:var(--bg-color);border:1px solid var(--border-color);border-radius:4px;box-shadow:0 2px 8px rgba(0,0,0,5%);z-index:1000;transition:background-color .3s ease,border-color .3s ease}.lang-dropdown:hover .lang-options{display:block}.lang-options a{display:flex;align-items:center;gap:6px;padding:5px 12px;text-decoration:none;color:var(--text-color);font-family:main;font-size:14px;transition:all .2s ease}.lang-options a:hover{background-color:var(--selection-color)}.lang-options a:first-child{border-radius:4px 4px 0 0}.lang-options a:last-child{border-radius:0 0 4px 4px}.theme-switch-item{display:flex;justify-content:flex-end;margin-top:20px}#theme-toggle{background:0 0;border:none;padding:0;cursor:pointer;color:var(--menu-unselected);display:flex;align-items:center;transition:color .2s ease}#theme-toggle:hover{color:var(--menu-hover)}.sun-icon,.moon-icon{width:16px;height:16px}[data-theme=dark] .sun-icon{display:block}[data-theme=dark] .moon-icon{display:none}[data-theme=light] .sun-icon{display:none}[data-theme=light] .moon-icon{display:block}.contact-section{margin-top:3em;margin-bottom:4em;padding:1.5em 0;border-top:1px solid var(--border-color);border-bottom:1px solid var(--border-color);text-align:left;font-family:menu}.contact-section p{margin:0;color:var(--text-unselected);font-size:.95em}.contact-section a{color:var(--menu-selected);text-decoration:none;transition:color .2s ease}.contact-section a:hover{color:var(--menu-hover)}.post-footer{margin-bottom:4em;color:var(--menu-unselected);font-size:.95em;line-height:1.6}.post-footer p{margin:.5em 0}img[src$="linkedin.svg"],img[src$="email.svg"]{width:16px;height:16px;vertical-align:middle}@media(min-width:1000px){.container{margin-left:calc((100% - var(--container-max-width))/3 + 20px);margin-right:auto;padding-left:0;padding-right:0}}@media(max-width:900px){:root{--content-padding:35px;--font-size-base:13.75px;--line-height-base:22px;--sidebar-width:130px;--container-max-width:840px}.posts-list,.nav-links a{font-size:15.5px}.page,.about,.post{font-size:13.75px;line-height:22px}}@media(max-width:800px){:root{--content-padding:25px;--sidebar-width:120px;--container-max-width:780px}.posts-list,.nav-links a{font-size:15px}.page,.about,.post{font-size:13.5px;line-height:21px}}@media(max-width:700px){:root{--content-padding:20px;--sidebar-width:110px;--container-max-width:680px}.posts-list,.nav-links a{font-size:14.5px}.page,.about,.post{font-size:13.25px;line-height:20px}}@media(max-width:600px){body{padding-top:20px}:root{--content-padding:15px}.container{flex-direction:column;padding:0 var(--content-padding);max-width:100%}.sidebar{width:auto;min-height:auto;border-right:none;border-bottom:1px solid var(--border-color);margin-bottom:20px;padding:0 0 20px;position:static;max-height:none;overflow-y:visible}.nav-links{text-align:right;display:flex;justify-content:flex-end;gap:20px;padding-right:15px}.nav-links li{margin-bottom:0}.content{padding:0}.theme-switch-item{margin:0;padding:4px 8px;background-color:var(--code-bg);border-radius:4px;transition:background-color var(--transition-speed)var(--transition-timing)}#theme-toggle{padding:2px}.category-filter-container{margin-top:20px;margin-bottom:20px;justify-content:space-evenly}}@media(max-width:400px){:root{--content-padding:12px}.container{padding:0 var(--content-padding)}.nav-links{gap:15px}.posts-list,.nav-links a{font-size:13.5px}.page,.about,.post{font-size:12.75px;line-height:19px}}body,pre,code,.series-overview,.article-disclaimer,.article-questions,.questions-preview,.questions-content,.checklist,.checklist-item,.lang-current,.lang-options,.container,.sidebar,.post-toc,.posts-list,.nav-links a,.page,.about,.project-marker,.post{transition:background-color var(--transition-speed)var(--transition-timing),color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing),font-size var(--transition-speed)var(--transition-timing),line-height var(--transition-speed)var(--transition-timing)}.collapsible-section{background-color:color-mix(in srgb,var(--code-bg) 26%,var(--bg-color) 74%);border:1px solid color-mix(in srgb,var(--border-color) 82%,transparent 18%);border-radius:10px;margin:1.2em 0;overflow:hidden;box-shadow:none;transition:background-color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing),box-shadow var(--transition-speed)var(--transition-timing)}.collapsible-section:not([open]){border-color:rgba(58,170,255,.34);box-shadow:0 0 0 1px rgba(84,190,255,.1),0 0 18px rgba(84,190,255,.1)}.collapsible-section:not([open]):hover,.collapsible-section:not([open]):focus-within{border-color:rgba(58,170,255,.5);box-shadow:0 0 0 1px rgba(84,190,255,.14),0 0 24px rgba(84,190,255,.16)}.collapsible-section[open]{border-color:rgba(58,170,255,.26);box-shadow:0 0 0 1px rgba(84,190,255,6%),0 0 14px rgba(84,190,255,8%)}.collapsible-section summary{display:flex;align-items:center;justify-content:flex-start;gap:.7em;width:100%;box-sizing:border-box;padding:.72em 2.2em .72em .95em;cursor:pointer;position:relative;outline:none;list-style:none;color:var(--menu-selected);transition:color var(--transition-speed)var(--transition-timing)}.collapsible-section summary:hover{color:var(--menu-hover)}.collapsible-section summary::-webkit-details-marker{display:none}.collapsible-title{flex:initial;font-weight:600;letter-spacing:.01em;line-height:1.35}.collapsible-hint{flex:none;display:inline-flex;align-items:center;gap:.38em;margin-left:auto;padding:.16em .62em;border:1px solid rgba(58,170,255,.55);border-radius:999px;font-size:.74em;font-weight:600;letter-spacing:.01em;line-height:1.2;white-space:nowrap;color:#1872ba;background-color:rgba(84,190,255,8%);box-shadow:0 0 0 1px rgba(84,190,255,8%),0 0 12px rgba(84,190,255,.22);transition:color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing),background-color var(--transition-speed)var(--transition-timing),box-shadow var(--transition-speed)var(--transition-timing),transform var(--transition-speed)var(--transition-timing)}.collapsible-hint::after{content:'';display:inline-block;width:.42em;height:.42em;border-right:1.4px solid;border-bottom:1.4px solid;transform:rotate(-45deg);transform-origin:50% 50%;transition:transform .2s ease-in-out,border-color var(--transition-speed)var(--transition-timing)}.collapsible-section[open] .collapsible-hint::after{transform:rotate(45deg)}.collapsible-section:not([open]) .collapsible-hint::before{content:var(--text-expand,'Развернуть')}.collapsible-section[open] .collapsible-hint::before{content:var(--text-collapse,'Свернуть')}.collapsible-section[open] .collapsible-hint{color:var(--menu-selected);background-color:color-mix(in srgb,var(--selection-color) 58%,var(--bg-color) 42%);border-color:color-mix(in srgb,var(--border-color) 72%,var(--selection-color) 28%);box-shadow:none}.collapsible-section:hover .collapsible-hint::after,.collapsible-section[open] .collapsible-hint::after{border-color:initial}.collapsible-section summary:hover .collapsible-hint,.collapsible-section summary:focus-visible .collapsible-hint{transform:translateY(-1px);border-color:rgba(58,170,255,.78);background-color:rgba(84,190,255,.12);box-shadow:0 0 0 1px rgba(84,190,255,.14),0 0 18px rgba(84,190,255,.34)}[data-theme=dark] .collapsible-hint{color:#91d6ff;background-color:rgba(84,190,255,.14);border-color:rgba(84,190,255,.52);box-shadow:0 0 0 1px rgba(84,190,255,8%),0 0 14px rgba(84,190,255,.2)}[data-theme=dark] .collapsible-section:not([open]){border-color:rgba(84,190,255,.34);box-shadow:0 0 0 1px rgba(84,190,255,8%),0 0 18px rgba(84,190,255,.12)}[data-theme=dark] .collapsible-section:not([open]):hover,[data-theme=dark] .collapsible-section:not([open]):focus-within{border-color:rgba(84,190,255,.52);box-shadow:0 0 0 1px rgba(84,190,255,.12),0 0 24px rgba(84,190,255,.18)}[data-theme=dark] .collapsible-section[open]{border-color:rgba(84,190,255,.24);box-shadow:0 0 0 1px rgba(84,190,255,6%),0 0 14px rgba(84,190,255,.1)}[data-theme=dark] .collapsible-section[open] .collapsible-hint,[data-theme=dark] .collapsible-section summary:hover .collapsible-hint,[data-theme=dark] .collapsible-section summary:focus-visible .collapsible-hint{color:#bce7ff;background-color:rgba(84,190,255,.2);border-color:rgba(84,190,255,.72);box-shadow:0 0 0 1px rgba(84,190,255,.12),0 0 18px rgba(84,190,255,.3)}[data-theme=dark] .collapsible-section[open] .collapsible-hint{color:var(--menu-selected);background-color:color-mix(in srgb,var(--selection-color) 72%,var(--bg-color) 28%);border-color:color-mix(in srgb,var(--border-color) 78%,var(--selection-color) 22%);box-shadow:none}.collapsible-section summary:focus-visible{outline:2px solid var(--selection-color);outline-offset:4px}.collapsible-content{padding:0 .95em .72em}.collapsible-content>:first-child{margin-top:.35em}.collapsible-content>:last-child{margin-bottom:0}html[data-section=software][data-initial-focus-mode=off] .filter-controls[data-focus-mode=on] .category-filter-wrapper{max-height:100px;opacity:1;transform:translateY(0);margin-top:25px;transition:none!important}html[data-section=software][data-initial-focus-mode=off] .filter-controls[data-focus-mode=on] .focus-switch .slider{background-color:var(--selection-color);transition:none!important}html[data-section=software][data-initial-focus-mode=off] .filter-controls[data-focus-mode=on] .focus-switch .slider:before{transform:translateX(0);transition:none!important}html[data-section=software][data-initial-active-category] .filter-btn[data-category=all]{background:var(--bg-color);color:var(--menu-unselected);border-color:var(--border-color)}html[data-section=software][data-theme=light][data-initial-active-category=engineering] .filter-btn[data-category=engineering],html[data-section=software][data-theme=light][data-initial-active-category=insights] .filter-btn[data-category=insights],html[data-section=software][data-theme=light][data-initial-active-category=algorithms] .filter-btn[data-category=algorithms]{background-color:var(--menu-selected);color:var(--bg-color);border-color:var(--menu-selected)}html[data-section=software][data-theme=dark][data-initial-active-category=engineering] .filter-btn[data-category=engineering],html[data-section=software][data-theme=dark][data-initial-active-category=insights] .filter-btn[data-category=insights],html[data-section=software][data-theme=dark][data-initial-active-category=algorithms] .filter-btn[data-category=algorithms]{background-color:var(--menu-hover);color:var(--bg-color);border-color:var(--menu-hover)}html[data-section=software][data-initial-focus-mode=on] .post-item:not([data-featured=true]){max-height:0!important;opacity:0!important;transform:translateY(10px)!important;transition:none!important;pointer-events:none!important;margin-bottom:0!important}html[data-section=software][data-initial-focus-mode=off][data-initial-active-category=engineering] .post-item:not([data-categories~=engineering]),html[data-section=software][data-initial-focus-mode=off][data-initial-active-category=insights] .post-item:not([data-categories~=insights]),html[data-section=software][data-initial-focus-mode=off][data-initial-active-category=algorithms] .post-item:not([data-categories~=algorithms]){max-height:0!important;opacity:0!important;transform:translateY(10px)!important;transition:none!important;pointer-events:none!important;margin-bottom:0!important}.filter-controls{display:flex;flex-direction:column;align-items:center;margin-bottom:25px}.category-filter-wrapper{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;overflow:hidden;transition:all .4s var(--smooth-bezier)}.focus-switch-container{display:flex;justify-content:center;align-items:center}.focus-switch{position:relative;display:inline-flex;align-items:center;gap:12px;cursor:pointer;font-family:menu;font-size:13px;color:var(--menu-unselected);user-select:none}.focus-switch input{opacity:0;width:0;height:0;position:absolute}.focus-switch .slider{position:relative;display:inline-block;width:44px;height:24px;background-color:var(--selection-color);transition:background-color .4s ease;border-radius:24px}.focus-switch .slider:before{position:absolute;content:"";height:20px;width:20px;left:2px;bottom:2px;background-color:#fff;transition:transform .4s ease-in-out;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,.1)}.focus-switch input:checked+.slider{background-color:#34c759}.focus-switch input:checked+.slider:before{transform:translateX(20px)}.filter-controls[data-focus-mode=on] .category-filter-wrapper{max-height:0;opacity:0;transform:translateY(10px);pointer-events:none}.filter-controls[data-focus-mode=off] .category-filter-wrapper{max-height:100px;opacity:1;transform:translateY(0);pointer-events:auto;margin-top:25px}.post-item{margin-bottom:0;line-height:1.8em;overflow:hidden;max-height:5em;transition:opacity .4s var(--smooth-bezier),transform .4s var(--smooth-bezier),max-height .4s var(--smooth-bezier)}.post-item.hidden{opacity:0;transform:translateY(10px);max-height:0;pointer-events:none;margin-bottom:0}.article-questions{margin:1.5em 0;position:relative}.questions-preview{display:flex;align-items:center;padding:10px 16px;background:linear-gradient(135deg,rgba(59,130,246,.1),rgba(147,197,253,8%));backdrop-filter:blur(12px);border:1px solid rgba(59,130,246,.2);border-radius:10px;cursor:pointer;transition:all .3s var(--smooth-bezier);user-select:none;font-size:13px;color:var(--text-color);box-shadow:0 3px 12px rgba(59,130,246,6%);font-weight:500;position:relative}.questions-preview::before{content:'';width:16px;height:16px;background:linear-gradient(135deg,#3B82F6,#60A5FA,#93C5FD);clip-path:polygon(50% 0%,0% 50%,50% 100%,100% 50%);margin-right:10px;flex-shrink:0;transition:transform .4s var(--smooth-bezier);z-index:3;position:relative;box-shadow:0 2px 8px rgba(59,130,246,.3)}.questions-preview .chevron{font-size:12px;font-weight:700;transition:transform .3s ease;color:var(--menu-unselected);margin-left:auto;z-index:3;position:relative}.questions-preview>span{position:relative;z-index:2}.questions-preview.expanded::before{transform:scale(1.1)rotate(90deg);box-shadow:0 4px 12px rgba(59,130,246,.4)}@media(hover:hover){.article-questions:hover .questions-preview::before{transform:scale(1.1)rotate(90deg);box-shadow:0 4px 12px rgba(59,130,246,.4)}.questions-preview:hover{transform:translateY(-1px);box-shadow:0 5px 20px rgba(59,130,246,.12);background:linear-gradient(135deg,rgba(59,130,246,.15),rgba(147,197,253,.12));border-color:rgba(59,130,246,.3)}[data-theme=dark] .questions-preview:hover{background:linear-gradient(135deg,rgba(59,130,246,.12),rgba(147,197,253,8%));border-color:rgba(59,130,246,.25);box-shadow:0 5px 20px rgba(0,0,0,.25)}}[data-theme=dark] .questions-preview{background:linear-gradient(135deg,rgba(59,130,246,8%),rgba(147,197,253,5%));border:1px solid rgba(59,130,246,.15);box-shadow:0 3px 12px rgba(0,0,0,.15)}.questions-preview.expanded{border-radius:10px 10px 0 0;box-shadow:0 2px 8px rgba(59,130,246,.1);transform:translateY(0)}.questions-preview.expanded .chevron{transform:rotate(180deg)}.questions-content{max-height:0;opacity:0;overflow:hidden;transition:all .4s var(--smooth-bezier);background:linear-gradient(135deg,rgba(59,130,246,5%),rgba(147,197,253,3%));backdrop-filter:blur(12px);border:1px solid rgba(59,130,246,.2);border-top:none;border-radius:0 0 10px 10px;margin-top:-1px}[data-theme=dark] .questions-content{background:linear-gradient(135deg,rgba(59,130,246,3%),rgba(147,197,253,2%));border-color:rgba(59,130,246,.15)}.questions-content.expanded{max-height:500px;opacity:1;box-shadow:0 3px 12px rgba(59,130,246,6%)}[data-theme=dark] .questions-content.expanded{box-shadow:0 3px 12px rgba(0,0,0,.15)}.questions-inner{padding:16px}.questions-inner ul{margin:0;padding-left:18px}.questions-inner li{color:var(--text-color);line-height:1.5;margin-bottom:4px;font-size:13px}.questions-inner li:last-child{margin-bottom:0}.questions-inner p{margin:0 0 8px;color:var(--text-color);font-size:13px}.questions-inner p:last-child{margin-bottom:0}.uni-media-container{margin:2em 0;width:100%;max-width:100%;display:flex;flex-direction:column;align-items:center}.single-image-item,.gallery-item{display:flex;justify-content:center;align-items:center;width:100%}.has-cover{background-color:#fff;border-radius:8px;padding:0 10px;box-sizing:border-box}[data-theme=dark] .has-cover{background-color:#fff}.image-inner-wrapper{position:relative;display:block;line-height:0;width:fit-content;max-width:100%}.content .uni-media-container img,.content .gallery-item img{display:block;max-width:var(--img-max-width,100%)!important;max-height:var(--img-max-height,350px)!important;margin:0;border-radius:4px;cursor:zoom-in;background-color:var(--code-bg)}.zoom-icon-hint{position:absolute;bottom:10px;right:10px;background:rgba(255,255,255,.8);border-radius:50%;padding:6px;display:flex;box-shadow:0 2px 5px rgba(0,0,0,.1);pointer-events:none;opacity:.6;transition:opacity .2s;z-index:2}.image-inner-wrapper:hover .zoom-icon-hint{opacity:1}.zoom-icon-hint svg{width:18px;height:18px;stroke:#333}.media-caption{margin-top:10px;margin-bottom:0;font-size:.9em;color:var(--text-color);opacity:.8;text-align:center}.media-caption p{margin:0;display:inline}.media-caption a{color:var(--text-color);text-decoration:underline;text-underline-offset:2px;transition:color var(--transition-speed)var(--transition-timing)}.media-caption a:hover{color:var(--menu-hover)}.image-zoom-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.9);z-index:10000;display:flex;justify-content:center;align-items:center;cursor:zoom-out;opacity:0;transition:opacity .3s ease;visibility:hidden}.image-zoom-overlay.active{opacity:1;visibility:visible}.image-zoom-overlay img{display:block;max-width:calc(100vw - 40px);max-height:calc(100vh - 40px);cursor:zoom-in;user-select:none}.image-zoom-overlay.zoomed{overflow:auto;display:flex;align-items:flex-start;justify-content:center}.image-zoom-overlay.zoomed img{max-width:none;max-height:none;cursor:zoom-out}.image-zoom-overlay.zoomed .image-zoom-close{position:fixed;top:10px;right:10px}.image-zoom-inner{position:relative;display:inline-block;line-height:0;max-width:calc(100vw - 40px);max-height:calc(100vh - 40px)}.image-zoom-close{position:absolute;top:10px;right:10px;width:28px;height:28px;background:rgba(0,0,0,.55);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10002;line-height:1;transition:background .2s ease,transform .2s ease}.image-zoom-close:hover{background:rgba(0,0,0,.8);transform:scale(1.1)}.gallery-container,.gallery-container *{box-sizing:border-box}.gallery-container{width:100%;max-width:100%;overflow:hidden}.gallery-wrapper{position:relative;display:flex;align-items:center;width:100%}.gallery-main{display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch;gap:0;padding-bottom:0;width:100%}.gallery-main::-webkit-scrollbar{display:none}.gallery-main{-ms-overflow-style:none;scrollbar-width:none}.gallery-item{flex:0 0 100%;user-select:none;-webkit-user-drag:none}.gallery-nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.7);border:1px solid var(--border-color);border-radius:50%;width:40px;height:40px;display:flex;justify-content:center;align-items:center;cursor:pointer;z-index:10;transition:background .2s ease,opacity .2s ease;padding:0}.gallery-nav:hover{background:rgba(255,255,255,.9)}.gallery-nav.disabled{opacity:.2;cursor:default}.gallery-nav svg{width:24px;height:24px;fill:#333}.gallery-nav.prev{left:10px}.gallery-nav.next{right:10px}.gallery-thumbnails-container{display:flex;justify-content:center;width:100%;margin-top:8px;overflow:hidden}.gallery-thumbnails{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;max-width:100%;-webkit-overflow-scrolling:touch;justify-content:flex-start}.gallery-thumbnails::before,.gallery-thumbnails::after{content:'';margin:auto}.gallery-thumbnails::-webkit-scrollbar{display:none}.gallery-thumbnails{-ms-overflow-style:none;scrollbar-width:none}.gallery-thumb{flex:0 0 75px;height:75px;padding:0;border-radius:4px;background:#fff;cursor:pointer;overflow:hidden;transition:border-color .2s ease;display:flex;justify-content:center;align-items:center;border:1px solid var(--border-color)}.gallery-thumb img{width:100%;height:100%;object-fit:contain;opacity:.6;transition:opacity .2s ease;cursor:pointer}.gallery-thumb.active{border-color:var(--menu-selected)}.gallery-thumb.active img{opacity:1}.gallery-thumb:hover img{opacity:1}[data-theme=dark] .gallery-thumb.active{border-color:var(--menu-hover)}[data-theme=dark] .gallery-thumb,[data-theme=dark] .gallery-nav{background:#fff}.content table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:13px;line-height:1.4;display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.content th,.content td{padding:8px 12px;text-align:left;vertical-align:middle;border-bottom:1px solid var(--border-color)}.content th{font-weight:600;color:var(--menu-selected);border-bottom:1.5px solid color-mix(in srgb,var(--border-color) 85%,var(--text-color) 15%);white-space:nowrap}.content tbody tr:last-child td{border-bottom:none}.content tbody tr{transition:background-color var(--transition-speed)var(--transition-timing)}.content tbody tr:hover{background-color:var(--code-bg)}.post-toc{margin-top:25px;font-family:menu;text-align:left;position:sticky;top:50px;max-height:calc(100vh - 120px);overflow-y:auto;opacity:0;visibility:hidden;transition:opacity .4s ease,visibility .4s ease,transform .4s ease;transform:translateY(10px);padding-top:15px;padding-bottom:15px;padding-right:10px;scrollbar-width:thin;scrollbar-color:transparent transparent;mask-image:linear-gradient( to bottom,transparent 0%,black 15px,black calc(100% - 15px),transparent 100% );-webkit-mask-image:linear-gradient( to bottom,transparent 0%,black 15px,black calc(100% - 15px),transparent 100% )}.post-toc::-webkit-scrollbar{width:5px}.post-toc::-webkit-scrollbar-track{background:0 0}.post-toc::-webkit-scrollbar-thumb{background-color:transparent;border-radius:3px;transition:background-color .3s ease}.post-toc:hover{scrollbar-color:var(--border-color)transparent}.post-toc:hover::-webkit-scrollbar-thumb{background-color:var(--border-color)}@media(min-width:601px){.post-toc.is-visible{opacity:1;visibility:visible;transform:translateY(0);z-index:100}}@media(max-height:750px){.post-toc{margin-top:10px;top:10px;max-height:calc(100vh - 50px)}}.toc-title{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--menu-unselected);margin-bottom:15px;opacity:.7}.post-toc ul{list-style:none;padding:0;margin:0}.post-toc li{margin-bottom:8px}.post-toc a{color:var(--menu-unselected);text-decoration:none;font-size:13px;transition:color .2s ease,transform .2s ease;display:inline-block;line-height:1.4}.post-toc a:hover{color:var(--menu-hover)}.post-toc a.active{color:var(--menu-selected);font-weight:500}.post-toc ul ul{margin-top:8px;padding-left:15px}.post-toc ul ul a{font-size:12px;opacity:.9}.toc-toggle{display:none;position:fixed;top:50%;right:0;width:32px;height:48px;border-radius:8px 0 0 8px;background-color:color-mix(in srgb,var(--menu-selected) 8%,var(--bg-color) 92%);color:var(--menu-selected);border:1px solid color-mix(in srgb,var(--menu-selected) 30%,transparent 70%);border-right:none;box-shadow:-2px 0 12px rgba(0,0,0,8%);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:1001;cursor:pointer;align-items:center;justify-content:center;transition:all .3s ease;opacity:0;visibility:hidden;transform:translateY(-50%)translateX(100%)}.toc-toggle.is-visible{opacity:1;visibility:visible;transform:translateY(-50%)translateX(0)}.toc-toggle:hover{background-color:color-mix(in srgb,var(--menu-selected) 15%,var(--bg-color) 85%)}.post-toc .toc-header{display:none}@media(max-width:600px){.toc-toggle{display:flex}.post-toc{position:fixed;top:0;bottom:0;right:0;width:250px;height:100%;height:100dvh;max-height:100dvh;max-width:85vw;box-sizing:border-box;background-color:var(--bg-color);border-left:1px solid var(--border-color);border-top:none;padding:calc(max(50px,env(safe-area-inset-top)))20px 20px;box-shadow:-5px 0 20px rgba(0,0,0,.1);z-index:1000;text-align:left;overflow-y:auto;opacity:1;visibility:hidden;transform:translateX(100%);transition:transform .4s cubic-bezier(.4,0,.2,1),visibility .4s;margin-top:0;mask-image:none;-webkit-mask-image:none;scrollbar-width:auto;scrollbar-color:auto}.post-toc.active{visibility:visible;transform:translateX(0)}.toc-toggle.active{opacity:0;visibility:hidden;pointer-events:none}.post-toc .toc-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid var(--border-color)}.post-toc .toc-header .toc-title{margin-bottom:0}.toc-close{background:0 0;border:none;color:var(--menu-unselected);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:5px;border-radius:50%;transition:color .2s,background-color .2s}.toc-close:hover{color:var(--text-color);background-color:rgba(128,128,128,.1)}.post-toc ul ul{padding-right:0;padding-left:15px;text-align:left}.toc-title{text-align:left}}.mermaid-wrapper{background-color:#fff!important;padding:20px 24px!important;box-sizing:border-box;line-height:normal!important}[data-theme=dark] .mermaid-wrapper{background-color:#fff!important}.mermaid-wrapper .image-inner-wrapper{width:100%!important;max-width:100%!important;line-height:normal!important}.mermaid-wrapper .mermaid-diagram{width:100%!important;max-width:100%!important;display:flex;justify-content:center;align-items:center;line-height:normal!important}.mermaid-diagram *,.mermaid-zoom-container *{font-family:main,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,sans-serif!important}.toc-mobile-overlay{position:fixed;top:0;left:0;width:100vw;height:100dvh;background:rgba(0,0,0,.15);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:999;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.toc-mobile-overlay.active{opacity:1;visibility:visible}@media(hover:none){.post-toc a:hover{color:var(--menu-unselected)}.post-toc a.active:hover{color:var(--menu-selected)}.toc-close:hover{color:var(--menu-unselected);background-color:transparent}.toc-toggle:hover{background-color:color-mix(in srgb,var(--menu-selected) 8%,var(--bg-color) 92%)}}.checklist{margin:1.4em 0;border-radius:10px;border:1px solid rgba(58,170,255,.24);background-color:color-mix(in srgb,var(--code-bg) 18%,var(--bg-color) 82%);box-shadow:0 0 0 1px rgba(84,190,255,6%),0 0 14px rgba(84,190,255,6%);overflow:hidden;transition:background-color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing),box-shadow var(--transition-speed)var(--transition-timing)}.checklist-header{display:flex;align-items:center;gap:.6em;padding:.72em .95em;font-weight:600;font-size:.92em;letter-spacing:.01em;color:var(--menu-selected);border-bottom:1px solid rgba(58,170,255,.16);background:linear-gradient(135deg,rgba(58,170,255,6%),rgba(84,190,255,2%))}.checklist-header::before{content:'';width:.52em;height:.52em;border-radius:50%;background:linear-gradient(135deg,#3AAAFF,#54BEFF);box-shadow:0 0 0 3px rgba(84,190,255,.14);flex:none}.checklist-item{border-bottom:1px solid rgba(58,170,255,.12);transition:background-color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing)}.checklist-item:last-child{border-bottom:none}.checklist-item summary{display:flex;align-items:center;gap:.7em;padding:.62em .95em;cursor:pointer;list-style:none;outline:none;color:var(--text-color);transition:background-color .2s ease,color var(--transition-speed)var(--transition-timing)}.checklist-item summary::-webkit-details-marker{display:none}.checklist-item summary:hover{background-color:rgba(58,170,255,5%)}.checklist-item summary:focus-visible{outline:2px solid var(--selection-color);outline-offset:-2px}.checklist-item-number{flex:none;counter-increment:checklist-counter;display:inline-flex;align-items:center;justify-content:center;width:1.65em;height:1.65em;border-radius:50%;font-size:.78em;font-weight:700;line-height:1;color:#fff;background:linear-gradient(135deg,#3AAAFF,#54BEFF);border:1px solid rgba(58,170,255,.6);box-shadow:0 0 10px rgba(84,190,255,.25);transition:color var(--transition-speed)var(--transition-timing),background-color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing),box-shadow var(--transition-speed)var(--transition-timing),transform .2s ease}.checklist-item-number::before{content:counter(checklist-counter)}.checklist-item[open] .checklist-item-number{color:#1872ba;background:rgba(84,190,255,.1);border-color:rgba(58,170,255,.4);box-shadow:0 0 8px rgba(84,190,255,.12);transform:scale(1)}.checklist-item summary:hover .checklist-item-number{border-color:rgba(58,170,255,.6);box-shadow:0 0 12px rgba(84,190,255,.22)}.checklist-item-title{flex:auto;font-weight:600;font-size:.92em;letter-spacing:.01em;line-height:1.35}.checklist-item-chevron{flex:none;display:inline-block;width:.42em;height:.42em;border-right:1.5px solid var(--menu-unselected);border-bottom:1.5px solid var(--menu-unselected);transform:rotate(-45deg);transition:transform .25s ease,border-color var(--transition-speed)var(--transition-timing);margin-right:.2em}.checklist-item[open] .checklist-item-chevron{transform:rotate(45deg);border-color:rgba(58,170,255,.7)}.checklist-item summary:hover .checklist-item-chevron{border-color:var(--menu-hover)}.checklist-item-body{padding:0 .95em .72em 3.3em;font-size:.96em;line-height:1.62;color:var(--text-color)}.checklist-item-body>:first-child{margin-top:0}.checklist-item-body>:last-child{margin-bottom:0}[data-theme=dark] .checklist{border-color:rgba(84,190,255,.22);background-color:color-mix(in srgb,var(--code-bg) 26%,var(--bg-color) 74%);box-shadow:0 0 0 1px rgba(84,190,255,6%),0 0 14px rgba(84,190,255,8%)}[data-theme=dark] .checklist-header{border-bottom-color:rgba(84,190,255,.14);background:linear-gradient(135deg,rgba(84,190,255,6%),rgba(84,190,255,2%))}[data-theme=dark] .checklist-header::before{box-shadow:0 0 0 3px rgba(84,190,255,.12)}[data-theme=dark] .checklist-item{border-bottom-color:rgba(84,190,255,.1)}[data-theme=dark] .checklist-item summary:hover{background-color:rgba(84,190,255,6%)}[data-theme=dark] .checklist-item-number{color:#fff;background:linear-gradient(135deg,#3AAAFF,#54BEFF);border-color:rgba(84,190,255,.6);box-shadow:0 0 10px rgba(84,190,255,.3)}[data-theme=dark] .checklist-item[open] .checklist-item-number{color:#91d6ff;background:rgba(84,190,255,.14);border-color:rgba(84,190,255,.45);box-shadow:0 0 8px rgba(84,190,255,.14)}[data-theme=dark] .checklist-item[open] .checklist-item-chevron{border-color:rgba(145,214,255,.8)}.project-marker{margin-left:4px;color:var(--project-marker-color);font-size:.6em;vertical-align:0}.about h4{margin-bottom:1em}.project-marker{line-height:1}.block .about{padding-bottom:0}.block .about h4{margin-top:0}.block .about p{margin:0 0 1em}.block .posts-list{padding-left:0;margin:0}.block+.block{margin-top:1.8em}.block.tab-panel{margin-top:0;padding-bottom:4em}.block .about .project-status{padding-top:13.5px;color:var(--menu-unselected);text-align:center}.filter-controls:has(.projects){margin-bottom:14px}.projects{width:fit-content;gap:0;padding:0;border-radius:17px;flex-wrap:nowrap;background:var(--border-color)}.projects .filter-btn{margin:2px 0;border:0;background:0 0;color:var(--menu-unselected)}.projects .filter-btn:first-child{margin-left:2px}.projects .filter-btn:last-child{margin-right:2px}.projects .filter-btn:hover{color:var(--menu-hover)}[data-theme] .projects .filter-btn.active{background:var(--bg-color);color:var(--menu-selected);border:0}@media(max-width:600px){.block .post-date{padding-right:0}}.content>.block:last-child{padding-bottom:4em}.post-link,.post-link .post-date,.post-link .dots,.project-status,.projects,.projects .filter-btn{transition:color var(--transition-speed)var(--transition-timing),background-color var(--transition-speed)var(--transition-timing),border-color var(--transition-speed)var(--transition-timing),box-shadow var(--transition-speed)var(--transition-timing)}.post-link:hover{transition:none}html[data-section=software][data-initial-focus-mode] .content .post-item,html[data-section=software][data-initial-active-category] .content .post-item{max-height:none!important;opacity:1!important;transform:none!important;pointer-events:auto!important}