/*!
 * Bootstrap Reboot v4.3.1 (https://getbootstrap.com/)
 * Copyright 2011-2019 The Bootstrap Authors
 * Copyright 2011-2019 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
 */*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}@font-face{font-family:Montserrat;font-display:swap;src:url(./Montserrat-Medium-DW6Dzcuv.ttf);font-weight:500;font-style:normal}@font-face{font-family:Montserrat;font-display:swap;src:url(./Montserrat-Bold-nPtuWU9B.ttf);font-weight:700;font-style:normal}:root{--bg: #f4f7fb;--surface: #ffffff;--surface-soft: #eef3fa;--ink: #13233b;--muted: #4f5e74;--accent: #0f7ea8;--accent-strong: #0e5d8b;--line: #d6e1ee;--link: #0e5d8b;--link-hover: #0a78ad;--focus-ring: rgba(15, 126, 168, .35);--glass-bg: rgba(255, 255, 255, .58);--glass-bg-soft: rgba(255, 255, 255, .45);--glass-line: rgba(255, 255, 255, .62);--glass-shadow: 0 12px 26px rgba(18, 35, 59, .1)}*{box-sizing:border-box;margin:0;padding:0;font-family:Montserrat,sans-serif}html,body{overflow-x:hidden}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}}body{background:radial-gradient(circle at 20% 5%,#e0edf8 0,transparent 30%),radial-gradient(circle at 85% 10%,#d9edf5 0,transparent 35%),var(--bg);color:var(--ink)}body:not(.is-admin-page),body:not(.is-admin-page) *{user-select:none;-webkit-user-select:none}main{position:relative}a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent;transition:color .2s ease,opacity .2s ease,border-color .2s ease,background-color .2s ease}a:hover{text-decoration:none}a:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:8px}.resume__item-body a,.blog-page p a,.project-page p a,.page-simple p a{color:var(--link);font-weight:600;text-decoration:underline;text-decoration-color:#0e5d8b59;text-underline-offset:.16em;text-decoration-thickness:.08em}.resume__item-body a:hover,.blog-page p a:hover,.project-page p a:hover,.page-simple p a:hover{color:var(--link-hover);text-decoration-color:#0a78adb3}.container{max-width:1140px;margin:0 auto;padding:0 20px}.divider{width:80px;height:4px;margin:20px 0;border-radius:999px;background:linear-gradient(90deg,var(--accent),#5fb7d9)}.lang-switcher{position:fixed;top:14px;right:14px;z-index:30;display:flex;gap:6px}.lang-switcher button{border:1px solid rgba(255,255,255,.4);background:#ffffff59;color:var(--ink);padding:6px 10px;border-radius:8px;cursor:pointer}.lang-switcher button.active{background:var(--ink);color:#fff}@media (max-width: 992px){.lang-switcher{top:14px;right:10px;z-index:20}}@media (max-width: 576px){.lang-switcher{top:12px;right:8px}.lang-switcher button{padding:5px 9px;border-radius:7px}}.promo{min-height:100vh;padding:140px 0 90px;background:linear-gradient(135deg,#0f223d 0,#1f5b7a 45%,#2e87a8);background-size:180% 180%;position:relative;overflow:hidden;animation:promoGradientShift 26s ease-in-out infinite alternate}.promo .container{position:relative;z-index:2}.promo:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 85% 15%,rgba(255,255,255,.2),transparent 35%);animation:promoGlowFloat 18s ease-in-out infinite;will-change:transform,opacity}.promo:after{content:"";position:absolute;inset:-12% -8% auto auto;width:520px;height:520px;border-radius:50%;background:radial-gradient(circle,#aee0f729,#aee0f700 70%);animation:promoOrbDrift 24s ease-in-out infinite;pointer-events:none;will-change:transform,opacity}.promo__eyebrow{display:inline-block;margin-bottom:18px;padding:8px 14px;border-radius:999px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:#ffffff26}.promo .promo__subtitle{color:#b5d8e8;margin-bottom:8px}.promo .promo__title{max-width:780px;color:#f6fbff;line-height:1.1}.promo .promo__descr{margin-top:18px;max-width:700px;color:#e8f5fd;line-height:1.6}.promo__btns{margin-top:28px;display:flex;gap:14px;flex-wrap:wrap}.promo__stats{margin-top:36px;display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:14px;list-style:none}.promo__stats li{padding:16px;border:1px solid rgba(255,255,255,.2);border-radius:14px;background:#ffffff1a;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:transform .24s ease,background-color .24s ease}.promo__stats li:hover{transform:translateY(-2px);background:#ffffff24}.promo__stats span{display:block;color:#fff;font-size:24px;font-weight:700;margin-bottom:6px}.promo__stats p{color:#d4e9f5;font-size:13px;line-height:1.5}@keyframes promoGradientShift{0%{background-position:0% 30%}to{background-position:100% 70%}}@keyframes promoGlowFloat{0%,to{transform:translateZ(0) scale(1);opacity:.82}50%{transform:translate3d(-1.8%,2.6%,0) scale(1.04);opacity:1}}@keyframes promoOrbDrift{0%,to{transform:translateZ(0);opacity:.6}50%{transform:translate3d(-6%,4%,0);opacity:.82}}@media (prefers-reduced-motion: reduce){.promo{animation:none}.promo:before,.promo:after{animation:none}.promo__stats li{transition:none}}.title{font-weight:700;color:var(--ink)}.title_fz14{font-size:14px;line-height:1.5}.title_fz16{font-size:16px;line-height:1.5}.title_fz20{font-size:20px;line-height:1.4}.title_fz36{font-size:36px;line-height:1.2}.title_fz48{font-size:48px;line-height:1.1}.title__section-title{position:relative;z-index:1;margin-bottom:8px;color:var(--accent-strong)}.title__section-title:before{content:"";position:absolute;left:-10px;top:-6px;width:28px;height:28px;border-radius:50%;background:#d8ebf7;z-index:-1}.title__section-subtitle{max-width:600px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 20px;border-radius:10px;border:1px solid transparent;background:var(--accent);color:#fff;font-weight:700;font-size:14px;text-decoration:none;cursor:pointer;transition:.25s ease}.btn:hover{background:var(--accent-strong)}a.btn,a.btn:visited,a.btn:hover,a.btn:active{color:#fff}.promo .btn{background:#ffffff1f;border-color:#ffffff4d}.promo .btn:hover{background:#fff3}.sidepanel{position:fixed;z-index:3;top:360px;right:-150px;display:flex;justify-content:space-between;align-items:center;width:340px;transform:rotate(-90deg)}.sidepanel__divider{width:70px;height:2px;background-color:#000}.sidepanel__text{display:block;align-items:center;margin-bottom:0;font-weight:700;font-size:16px}.sidepanel__link{transform:rotate(90deg)}.sidepanel__link svg{transition:all .2s}.sidepanel__link svg:hover{transform:scale(1.5)}.menu{position:fixed;z-index:5;top:0;left:0;width:50px;height:100%;display:flex;align-items:center;flex-direction:column;background:linear-gradient(180deg,#0a1e32e6,#0c263ed6);backdrop-filter:blur(17px);-webkit-backdrop-filter:blur(17px);border-right:1px solid rgba(255,255,255,.24);box-shadow:8px 0 18px #08162633;transition:width .3s ease;color:#fff}.menu:hover{width:260px;padding-left:10px;background:linear-gradient(180deg,#08182bf5,#0a1e35e6)}.menu:hover .overlay{position:fixed;top:0;left:0;width:100%;height:100vh;background-color:#fff9;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.menu__links{height:calc(100% - 140px);overflow-y:auto;scrollbar-width:none;list-style:none;margin-top:60px}.menu__links::-webkit-scrollbar{display:none}.menu__links h4{font-weight:500;margin-bottom:10px;display:none;color:#fff}.menu__links li{display:flex;align-items:center;transition:background .2s ease}.menu__links li:hover{border-radius:8px;cursor:pointer;background:#ffffff29;box-shadow:0 0 8px #ffffff1a}.menu__links li span{padding:12px 10px;color:#fff}.menu__links li a{color:#fff;padding:10px;white-space:nowrap;text-decoration:none;display:none;opacity:.92}.menu__links li:hover a{opacity:1}.menu__links hr{border-color:#fff3;margin:10px 8px}.menu:hover .menu__links h4,.menu:hover .menu__links li a{display:block}.menu:hover .menu__links hr{border-color:#0000}.about{padding:110px 0 40px}.about__wrapper{display:grid;grid-template-columns:360px 1fr;gap:40px;align-items:start}.about__pic{border-radius:20px;overflow:hidden;box-shadow:0 24px 46px #13233b2e;height:100%}.about__pic img{width:100%;height:100%;object-fit:cover;min-height:460px}.about__title,.about__subtitle{color:var(--ink)}.about__descr{color:var(--muted);line-height:1.75}.about__highlights{margin-top:20px;display:grid;gap:10px;list-style:none}.about__highlights li{padding:12px 14px;border-left:3px solid var(--accent);background:var(--glass-bg-soft);border-radius:10px;color:#29415f;line-height:1.5;border:1px solid var(--glass-line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--glass-shadow)}.about__services{margin-top:36px;display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:16px}.about__service{padding:20px;background:var(--glass-bg);border:1px solid var(--glass-line);border-radius:16px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--glass-shadow);transition:transform .2s ease,box-shadow .2s ease}.about__service:hover{transform:translateY(-3px);box-shadow:0 14px 30px #10203824}.about__service h4{font-size:18px;line-height:1.4;color:var(--ink);margin-bottom:10px}.about__service p{color:var(--muted);line-height:1.6;font-size:14px}.resume{padding:110px 0 40px}.resume .title__section-title,.resume .title__section-subtitle{text-align:left}.resume .title__section-title:before{left:0;transform:none}.resume__metrics{margin:8px 0 34px;display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:14px}.resume__metric{padding:16px;border-radius:14px;background:var(--glass-bg-soft);border:1px solid rgba(188,202,218,.56);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 8px 18px #14263e14;transition:transform .2s ease,box-shadow .2s ease}.resume__metric:hover{transform:translateY(-2px);box-shadow:0 12px 22px #13263d1f}.resume__metric span{display:block;font-size:24px;font-weight:700;color:var(--accent-strong);margin-bottom:4px}.resume__metric p{color:var(--muted);font-size:13px}.resume__wrapper{display:grid;grid-template-columns:repeat(2,minmax(280px,1fr));gap:18px}.resume__column{background:var(--glass-bg-soft);border:1px solid rgba(188,202,218,.56);border-radius:20px;padding:24px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 8px 18px #14263e14}.resume__column-title{margin-bottom:16px;color:var(--ink);line-height:1.3}.resume__list{list-style:none;display:grid;gap:14px}.resume__item{border:1px solid rgba(188,203,219,.68);border-radius:14px;padding:16px;background:#ffffffbd;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 8px 16px #15294214;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.resume__item:hover{transform:translateY(-2px);border-color:#a4bad0d9;box-shadow:0 12px 22px #13263d1f}.resume__item-head{padding-left:52px;position:relative}.resume__item-icon{position:absolute;left:0;top:2px}.resume__item-title{margin-bottom:2px;color:var(--ink);line-height:1.4}.resume__item-location{font-size:12px;color:#44627d;overflow-wrap:anywhere}.resume__item-body{margin-top:10px}.resume__item-body p{color:var(--muted);font-size:13px;line-height:1.65;margin-bottom:8px;overflow-wrap:anywhere}.resume__item-body .resume__item-points{list-style:none;display:grid;gap:6px;margin:0 0 10px}.resume__item-body .resume__item-points li{position:relative;padding-left:14px;color:#4d627a;font-size:13px;line-height:1.5;overflow-wrap:anywhere}.resume__item-body .resume__item-points li:before{content:"";position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;background:#88a9c3}.resume__item-body a{color:var(--accent-strong);font-weight:700;font-size:13px;text-decoration:none}.skills{padding:110px 0 30px}.skills .title__section-title,.skills .title__section-subtitle{text-align:left}.skills .title__section-title:before{left:0;transform:none}.skills__intro{margin-top:10px;max-width:760px;color:var(--muted);line-height:1.6}.skills__responsibilities{margin-top:18px;display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:12px}.skills__responsibility{border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-bg);padding:14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--glass-shadow)}.skills__responsibility h3{color:var(--ink);font-size:16px;margin-bottom:6px;line-height:1.3}.skills__responsibility p{color:var(--muted);font-size:13px;line-height:1.5;margin-bottom:10px;overflow-wrap:anywhere}.skills__responsibility ul{list-style:none;display:grid;gap:6px}.skills__responsibility li{position:relative;padding-left:14px;color:#405b78;font-size:12px;line-height:1.45;overflow-wrap:anywhere}.skills__responsibility li:before{content:"";position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;background:#7ea4c4}.skills__levels{margin-top:18px;padding:18px;background:var(--glass-bg);border:1px solid var(--glass-line);border-radius:14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--glass-shadow)}.skills__levels-title{color:var(--ink);font-size:18px;margin-bottom:14px}.skills__levels-grid{display:grid;grid-template-columns:repeat(2,minmax(250px,1fr));gap:16px}.skills__level-group{position:relative;background:var(--glass-bg-soft);border:1px solid rgba(188,202,218,.56);border-radius:14px;padding:14px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 8px 18px #14263e14}.skills__level-group h4{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;color:#41566e;font-size:15px;margin-bottom:12px;font-weight:700;border:1px solid rgba(186,203,220,.68);border-radius:999px;background:#f1f6fbcc}.skills__cards{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(180px,1fr));gap:12px}.skills__card{position:relative;display:flex;align-items:flex-start;gap:10px;min-height:86px;padding:10px 12px;border-radius:12px;border:1px solid rgba(188,203,219,.68);background:#ffffffbd;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 8px 16px #15294214;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.skills__card:hover{transform:translateY(-2px);border-color:#a4bad0d9;box-shadow:0 12px 22px #13263d24}.skills__card:after{content:"";position:absolute;top:0;left:14px;right:14px;height:1px;background:linear-gradient(90deg,#ffffffdb,#fff0)}.skills__cards .skills__card:last-child:nth-child(odd){grid-column:1/-1}.skills__card-icon{width:30px;height:30px;border-radius:8px;background:linear-gradient(180deg,#eef5fb,#e4eef8);border:1px solid rgba(165,194,219,.56);display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#365575;flex-shrink:0}.skills__card-icon img{width:19px;height:19px;object-fit:contain}.skills__card-title{color:#1f3857;font-size:14px;font-weight:600;line-height:1.2;overflow-wrap:anywhere}.skills__card-meta{display:grid;gap:4px}.skills__card-text{color:#5f7085;font-size:12px;line-height:1.4;overflow-wrap:anywhere}.skills__level-group:nth-child(1){border-color:#bccada8f}.skills__level-group:nth-child(1) h4{color:#41566e;border-color:#bacbdcad;background:#f1f6fbcc}.skills__level-group:nth-child(2){border-color:#bccada8f}.skills__level-group:nth-child(2) h4{color:#41566e;border-color:#bacbdcad;background:#f1f6fbcc}.portfolio{padding:110px 0 40px}.portfolio .title__section-title,.portfolio .title__section-subtitle{text-align:left}.portfolio .title__section-title:before{left:0;transform:none}.portfolio__wrapper{margin-top:14px;display:grid;grid-template-columns:repeat(3,minmax(250px,1fr));gap:16px}.portfolio__card{overflow:hidden;border-radius:16px;border:1px solid var(--glass-line);background:var(--glass-bg);box-shadow:var(--glass-shadow);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:transform .25s ease,box-shadow .25s ease}.portfolio__card:hover{transform:translateY(-4px);box-shadow:0 16px 34px #10203824}.portfolio__image{width:100%;height:180px;object-fit:cover}.portfolio__body{padding:16px}.portfolio__body h3{font-size:18px;color:var(--ink);margin-bottom:8px}.portfolio__body p{color:var(--muted);font-size:13px;line-height:1.6;margin-bottom:10px}.portfolio__tags{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.portfolio__tags li{background:#e8f0f8;color:#315171;border-radius:999px;padding:5px 10px;font-size:11px;font-weight:700;letter-spacing:.02em}.portfolio__link{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 14px;border-radius:9px;background:var(--accent);color:#fff;font-size:13px;font-weight:700;text-decoration:none}.portfolio__link:hover{background:var(--accent-strong)}.portfolio a.portfolio__link,.portfolio a.portfolio__link:visited,.portfolio a.portfolio__link:hover,.portfolio a.portfolio__link:active{color:#fff}.portfolio__all{display:inline-flex;margin-top:14px;color:var(--accent-strong);text-decoration:none;font-weight:700}.contacts{padding:110px 0 90px}.contacts .title__section-title,.contacts .title__section-subtitle{text-align:left}.contacts .title__section-title:before{left:0;transform:none}.contacts__text{margin-bottom:18px;color:var(--muted)}.contacts__grid{display:grid;grid-template-columns:repeat(3,minmax(200px,1fr));gap:12px}.contacts__card{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;border:1px solid var(--glass-line);background:var(--glass-bg);text-decoration:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--glass-shadow);transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}.contacts__card:hover{transform:translateY(-3px);border-color:#fffc;box-shadow:0 14px 24px #13263d24}.contacts__icon{width:42px;height:42px;border-radius:10px;background:#edf5fc;display:grid;place-items:center;flex-shrink:0}.contacts__icon svg{width:22px;height:22px;fill:var(--ink)}.contacts__meta h3{text-transform:capitalize;font-size:15px;color:var(--ink);margin-bottom:2px}.contacts__meta p{color:var(--muted);font-size:12px}.contacts__cta{margin-top:18px}.contacts__modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:linear-gradient(145deg,#0a162685,#152c457a);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);display:grid;place-items:center;padding:18px}.contacts__modal{width:min(560px,100%);border-radius:16px;border:1px solid rgba(221,233,245,.62);background:linear-gradient(160deg,#f4faffc7,#e9f3fcad);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 24px 44px #0a182a4d;padding:16px;position:relative;overflow:hidden}.contacts__modal:before{content:"";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,#fffffff0,#ffffff14);pointer-events:none}.contacts__modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.contacts__modal-head h3{margin:0;color:var(--ink);font-size:24px;line-height:1.2}.contacts__modal-head button{width:34px;height:34px;border-radius:8px;border:1px solid rgba(167,189,210,.7);background:#ecf5fca3;color:#2a4764;font-size:22px;line-height:1;cursor:pointer;transition:background-color .2s ease}.contacts__modal-head button:hover{background:#e4f0fad1}.contacts__modal p{color:var(--muted);margin-bottom:12px}.contacts__modal-form{display:grid;gap:10px}.contacts__modal-form label:not(.contacts__policy){display:grid;gap:6px}.contacts__modal-form span{color:#34516d;font-size:13px;font-weight:700}.contacts__modal-form input:not([type=checkbox]),.contacts__modal-form textarea{border:1px solid rgba(167,189,210,.72);border-radius:10px;background:#ffffffb8;color:#1f3954;padding:10px 12px;outline:none;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.contacts__modal-form input:not([type=checkbox]):focus,.contacts__modal-form textarea:focus{border-color:#61a6cee6;box-shadow:0 0 0 3px #0f7ea829}.contacts__modal-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:6px}.contacts__modal-actions button:not(.btn){min-height:42px;padding:0 16px;border-radius:10px;border:1px solid rgba(167,189,210,.85);background:#ecf5fcd9;color:#2d4c69;font-weight:700;cursor:pointer}.contacts__modal-actions .btn[disabled]{opacity:.55;cursor:not-allowed;filter:grayscale(.2)}.contacts__modal-form .contacts__policy{display:flex;align-items:center;gap:10px;color:#36516c;font-size:13px;line-height:1.4;margin-top:2px;grid-template-columns:none}.contacts__modal-form .contacts__policy input{width:16px;height:16px;accent-color:var(--accent);flex-shrink:0}.contacts__modal-form .contacts__policy span{display:inline;margin:0}.contacts__modal-form .contacts__policy a{color:var(--accent-strong);text-decoration:underline;text-underline-offset:2px}.contacts__status{margin:2px 0 0;font-size:13px;line-height:1.4}.contacts__status_success{color:#0f6b3d}.contacts__status_error{color:#ad2323}.footer-main{border-top:1px solid var(--line);background:#ffffffb3;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);padding:18px 0}.footer-main__container{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.footer-main__copy{color:var(--muted);font-size:14px}.footer-main__nav{display:flex;gap:14px;flex-wrap:wrap}.footer-main__nav a{color:var(--ink);text-decoration:none;font-weight:600;font-size:14px;opacity:.88}.footer-main__nav a:hover{color:var(--accent-strong);opacity:1}.cookie-consent{position:fixed;left:16px;right:16px;bottom:16px;z-index:40;border:1px solid #2e4563;border-radius:12px;background:#0d1e32f2;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px}.cookie-consent p{color:#d8e7f7;font-size:14px;line-height:1.5;margin:0}.cookie-consent p a{color:#fff;font-weight:700;text-underline-offset:2px;text-decoration-thickness:1px}.cookie-consent p a:hover{color:#c8e7ff}.cookie-consent button{border:1px solid #4d7097;border-radius:9px;background:#1f4367;color:#fff;font-weight:700;font-size:14px;padding:8px 12px;cursor:pointer;white-space:nowrap}@media (max-width: 576px){.cookie-consent{flex-direction:column;align-items:stretch}}.workflow{padding:110px 0 30px}.workflow .title__section-title,.workflow .title__section-subtitle{text-align:left}.workflow .title__section-title:before{left:0;transform:none}.workflow__list{margin-top:14px;list-style:none;display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px}.workflow__item{padding:16px;border-radius:14px;border:1px solid var(--glass-line);background:var(--glass-bg);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--glass-shadow);min-height:180px;transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}.workflow__item:hover{transform:translateY(-4px);border-color:#a4bad0db;box-shadow:0 14px 24px #13263d24}.workflow__index{width:36px;height:36px;border-radius:50%;background:#eaf4fb;color:var(--accent-strong);font-size:12px;font-weight:700;display:grid;place-items:center;margin-bottom:10px;transition:transform .24s ease,background-color .24s ease}.workflow__item:hover .workflow__index{transform:scale(1.06);background:#dcebf8}.workflow__title{color:var(--ink);font-size:16px;margin-bottom:8px}.workflow__text{color:var(--muted);font-size:13px;line-height:1.65}.blog-preview{padding:100px 0 30px}.blog-preview__wrapper{margin-top:14px;display:grid;grid-template-columns:repeat(3,minmax(220px,1fr));gap:12px}.blog-preview__card{border:1px solid var(--glass-line);background:var(--glass-bg);border-radius:14px;padding:16px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--glass-shadow);transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}.blog-preview__card:hover{transform:translateY(-4px);border-color:#a4bad0db;box-shadow:0 14px 24px #13263d24}.blog-preview__card h3{color:var(--ink);margin-bottom:8px;font-size:18px;line-height:1.3}.blog-preview__card p{color:var(--muted);font-size:14px;line-height:1.6;margin-bottom:10px}.blog-preview__card a{color:var(--accent-strong);font-weight:700;text-decoration:none;transition:color .2s ease}.blog-preview__card a:hover{color:var(--accent)}.blog-preview__all{display:inline-flex;margin-top:14px;color:var(--accent-strong);font-weight:700;text-decoration:none;transition:color .2s ease,transform .2s ease}.blog-preview__all:hover{color:var(--accent);transform:translate(2px)}.page-simple{min-height:100vh;padding:120px 0 50px}.page-simple h1{color:var(--ink);margin-bottom:18px}.page-simple__back{display:inline-flex;margin-bottom:12px;color:var(--accent-strong);font-weight:700;text-decoration:none}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:14px}.project-grid__item{border:1px solid var(--glass-line);background:var(--glass-bg);border-radius:14px;padding:14px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:var(--glass-shadow)}.project-grid__item img{width:100%;height:160px;object-fit:cover;border-radius:10px;margin-bottom:10px}.project-grid__item h3{color:var(--ink);margin-bottom:8px}.project-grid__item p{color:var(--muted);font-size:14px;line-height:1.55;margin-bottom:10px}.project-grid__item a{color:var(--accent-strong);font-weight:700;text-decoration:none}.project-page,.blog-page{border:1px solid var(--glass-line);background:var(--glass-bg);border-radius:16px;padding:18px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--glass-shadow)}.project-page img,.blog-page img{width:100%;max-height:360px;object-fit:cover;border-radius:12px;margin-bottom:14px}.project-page h1,.blog-page h1{margin-bottom:10px}.project-page p,.blog-page p{color:var(--muted);line-height:1.7;margin-bottom:12px}.project-page ul,.blog-page ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.project-page li,.blog-page li{padding:5px 10px;border-radius:999px;background:#e8f0f8;color:#315171;font-size:12px;font-weight:700}.project-page__hero{display:grid;grid-template-columns:1.2fr 1fr;gap:14px;align-items:start;margin-bottom:14px}.project-page__hero img{margin-bottom:0;max-height:280px}.project-page__meta{display:grid;grid-template-columns:repeat(3,minmax(130px,1fr));gap:10px;margin-bottom:14px}.project-page__meta div{border:1px solid var(--glass-line);border-radius:10px;background:#ffffff75;padding:10px;display:grid;gap:4px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.project-page__meta span{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.project-page__meta strong{color:var(--ink);font-size:15px}.project-page__section{margin-bottom:12px}.project-page__section h3{color:var(--ink);margin-bottom:6px;font-size:18px}.project-page__list{list-style:disc;padding-left:18px;display:grid;gap:5px;margin-bottom:4px}.project-page__list li{background:transparent;color:var(--muted);font-size:14px;font-weight:500;padding:0;border-radius:0}.project-page__gallery{margin:10px 0 14px;display:grid;grid-template-columns:repeat(2,minmax(170px,1fr));gap:10px}.project-page__gallery img{max-height:220px;margin:0}.project-page__demo-link{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;color:#fff;background:var(--accent);border:1px solid transparent;border-radius:10px;font-weight:700}.project-page__demo-link:hover{background:var(--accent-strong)}.project-page a.project-page__demo-link,.project-page a.project-page__demo-link:visited,.project-page a.project-page__demo-link:hover,.project-page a.project-page__demo-link:active{color:#fff}.blog-page__code{border:1px solid #2a3f5b;background:#0f1a2b;border-radius:10px;overflow:hidden;box-shadow:0 8px 20px #08142229}.blog-page__code .blog-page__code-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #2a3f5b}.blog-page__code .blog-page__code-head span{color:#a6c3df;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.blog-page__code .blog-page__code-head button{border:1px solid #3a5f86;background:#1d3554;color:#fff;border-radius:7px;padding:7px 10px;cursor:pointer;transition:background .2s ease,border-color .2s ease}.blog-page__code .blog-page__code-head button:hover{background:#244970;border-color:#4e7cab}.blog-page__code pre{margin:0;padding:14px 12px;overflow-x:auto}.blog-page__code code{color:#d7e8f8;font-family:Consolas,Courier New,monospace;font-size:13px;line-height:1.5}.blog-page__playground{margin-top:18px;padding:16px;border:1px solid var(--glass-line);border-radius:14px;background:var(--glass-bg-soft);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.blog-page__playground h3{color:var(--ink);margin:0 0 12px}.blog-page__playground-grid{display:grid;gap:10px}.blog-page__preview{margin-top:12px;padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.blog-page__preview h4{margin:0 0 10px;color:var(--ink);font-size:20px;font-weight:700}.blog-page__preview iframe{width:100%;min-height:380px;border:1px solid #c9d9ea;border-radius:10px;background:#fff}.policy-page{border:1px solid var(--glass-line);background:var(--glass-bg);border-radius:16px;padding:20px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--glass-shadow)}.policy-page h1{margin-bottom:8px}.policy-page h2{color:var(--ink);font-size:20px;margin:0 0 8px}.policy-page p{color:var(--muted);line-height:1.7;margin-bottom:10px}.policy-page ul{margin:0;padding-left:18px;display:grid;gap:6px}.policy-page li{color:var(--muted);line-height:1.6}.policy-page__updated{font-size:14px;opacity:.9}.policy-page__section+.policy-page__section{margin-top:14px}.admin{min-height:100vh;padding:24px;background:#0f1a2a;color:#eaf2fb}.admin__auth,.admin__panel{max-width:1180px;margin:0 auto;border:1px solid #2a3b53;border-radius:14px;background:#17253a;padding:18px}.admin h1{font-size:28px;margin-bottom:8px;color:#f5fbff}.admin h2{font-size:16px;margin-bottom:10px;color:#d4e5f8}.admin p{color:#b3c7dd;margin-bottom:12px;line-height:1.5}.admin form{display:flex;gap:10px;flex-wrap:wrap}.admin__stack{display:grid;gap:12px}.admin__field{display:grid;gap:6px}.admin__field span{color:#d4e5f8;font-weight:700;font-size:13px}.admin__item-card{border:1px solid #2f435f;border-radius:10px;background:#101d30;padding:10px;display:grid;gap:10px}.admin__playground-preview{border:1px solid #2f435f;border-radius:10px;background:#0c1728;padding:10px;display:grid;gap:10px}.admin__preview-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.admin__preview-frame{width:100%;min-height:280px;border:1px solid #355074;border-radius:8px;background:#fff}.admin input,.admin textarea{border:1px solid #355074;border-radius:10px;background:#0f1a2a;color:#eaf3fb;padding:10px 12px;font-family:Consolas,Courier New,monospace}.admin input{min-width:240px;flex:1 1 280px}.admin textarea{width:100%;min-height:470px;resize:vertical}.admin button,.admin a,.admin .admin__file{border:1px solid #3a5d86;border-radius:9px;background:#24466a;color:#fff;padding:8px 12px;cursor:pointer;text-decoration:none;font-weight:700;font-size:14px}.admin button.active{background:#0f7ea8;border-color:#54afcf}.admin__warn{margin-top:10px;color:#ffdb8e;font-weight:600}.admin__top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.admin__actions,.admin__controls,.admin__locale{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;align-items:center}.admin__layout{margin-top:12px;display:grid;grid-template-columns:220px 1fr;gap:12px}.admin__sidebar{border:1px solid #2f435f;border-radius:12px;background:#132136;padding:12px}.admin__sidebar ul{list-style:none;display:grid;gap:6px;margin-bottom:10px}.admin__sidebar li button{width:100%;text-transform:lowercase;text-align:left;background:#1d334f}.admin__sidebar li button.changed{border-color:#58c27a;box-shadow:inset 0 0 0 1px #58c27a}.admin__changes{font-size:13px;color:#a7bfd9}.admin__editor{border:1px solid #2f435f;border-radius:12px;background:#132136;padding:12px}.admin__file{position:relative;overflow:hidden;display:inline-flex;align-items:center}.admin__file input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.admin__ok,.admin__error{margin-top:10px;font-weight:600;font-size:14px}.admin__ok{color:#87e2ad}.admin__error{color:#ff8e8e}@media (max-width: 768px){.admin{padding:10px}.admin h1{font-size:22px}.admin__layout{grid-template-columns:1fr}.admin textarea{min-height:360px}}@media (max-width: 1200px){.container{max-width:980px}.sidepanel{display:none}.about__wrapper{grid-template-columns:320px 1fr}.workflow__list{grid-template-columns:repeat(3,minmax(180px,1fr))}}@media (max-width: 992px){.container{max-width:760px}.title_fz48{font-size:40px}main{padding-left:40px}.menu{width:40px;height:100%;background:#0a1e32e0;backdrop-filter:none;-webkit-backdrop-filter:none;border-right:1px solid rgba(194,214,232,.22);border-bottom:none;padding:0}.menu:hover{width:220px;padding-left:0;background:#08182bf2;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.menu__links{display:grid;align-content:start;gap:6px;margin:70px 0 0;padding:0 3px;height:calc(100% - 70px);overflow-y:auto;overflow-x:hidden}.menu__links h4,.menu__links hr,.menu__links li a{display:none}.menu__links li{justify-content:center}.menu__links li span{padding:9px 6px}.menu__links li:hover{background:#ffffff0f;box-shadow:none}.menu:hover .menu__links h4,.menu:hover .menu__links hr,.menu:hover .menu__links li a{display:block}.menu:hover .menu__links li{justify-content:flex-start}.about__wrapper{grid-template-columns:1fr}.about__pic img{min-height:360px}.about__services{grid-template-columns:1fr}.resume__metrics,.skills__responsibilities,.skills__levels-grid,.skills__cards,.blog-preview__wrapper,.project-grid,.portfolio__wrapper,.contacts__grid,.workflow__list{grid-template-columns:repeat(2,minmax(200px,1fr))}.resume__wrapper,.project-page__hero{grid-template-columns:1fr}.project-page__meta,.project-page__gallery{grid-template-columns:repeat(2,minmax(170px,1fr))}}@media (max-width: 768px){.container{max-width:620px}.title_fz48{font-size:36px}.title_fz36{font-size:30px}.about__pic img{min-height:300px}.resume__metrics,.skills__responsibilities,.skills__levels-grid,.contacts__grid,.workflow__list{grid-template-columns:1fr}.skills__cards{grid-template-columns:repeat(2,minmax(150px,1fr))}.portfolio__wrapper{grid-template-columns:repeat(2,minmax(220px,1fr))}.project-page__meta,.project-page__gallery{grid-template-columns:1fr}.blog-page__preview iframe{min-height:320px}}@media (max-width: 576px){main{padding-left:36px}.menu{width:36px}.menu:hover{width:210px}.menu__links{padding:0 2px}.menu__links li span{padding:8px 5px;font-size:20px}.title_fz48{font-size:32px;line-height:1.2}.title_fz36{font-size:26px;line-height:1.2}.promo{padding-top:120px}.promo__stats,.resume__metrics,.skills__responsibilities,.skills__levels-grid,.skills__cards,.blog-preview__wrapper,.project-grid,.portfolio__wrapper,.contacts__grid,.workflow__list{grid-template-columns:1fr}.btn{width:100%}.blog-page__playground{padding:12px}.blog-page__code .blog-page__code-head{padding:9px 10px}.blog-page__code .blog-page__code-head button{padding:6px 8px;font-size:12px}.blog-page__preview{padding:8px}.blog-page__preview h4{font-size:18px}.blog-page__preview iframe{min-height:270px}}
