:root{--bg:#F4F6FB;--surface:#FFFFFF;--ink:#141A2E;--muted:#58627E;--line:#DCE1EE;--accent:#4F46E5;--accent-ink:#FFFFFF;--ok:#0E9F6E;--warn:#D97706;--bad:#DC3C41;--glow:rgba(79,70,229,.12);--head:"Bricolage Grotesque",system-ui,sans-serif;--body:"DM Sans",system-ui,sans-serif;--mono:"JetBrains Mono",ui-monospace,monospace;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0A0F1C;--surface:#141B2E;--ink:#E8ECF8;--muted:#98A2C0;--line:#243049;--accent:#8B93FF;--accent-ink:#0C111F;--ok:#34D399;--warn:#FBBF24;--bad:#FF6B70;--glow:rgba(139,147,255,.14);color-scheme:dark}}:root[data-theme=dark]{--bg:#0A0F1C;--surface:#141B2E;--ink:#E8ECF8;--muted:#98A2C0;--line:#243049;--accent:#8B93FF;--accent-ink:#0C111F;--ok:#34D399;--warn:#FBBF24;--bad:#FF6B70;--glow:rgba(139,147,255,.14);color-scheme:dark}html{scroll-behavior:smooth}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:400 15.5px/1.6 var(--body);transition:background .3s,color .3s;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);background:var(--bg);z-index:30}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}.wrap{max-width:1080px;margin:0 auto;padding:0 24px}.center{min-height:70vh;display:grid;place-items:center;color:var(--muted);text-align:center;padding:24px}canvas.cosmos{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:-1;pointer-events:none}header.top{position:fixed;top:env(safe-area-inset-top,0px);left:0;right:0;z-index:20;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}nav.main{display:flex;align-items:center;justify-content:space-between;height:64px;gap:12px}.logo{font:800 18px var(--head);text-decoration:none;letter-spacing:-.02em}.logo span{color:var(--accent)}.links{display:flex;gap:26px;align-items:center}.links a{text-decoration:none;color:var(--muted);font-weight:500;font-size:15px;transition:color .2s}.links a:hover{color:var(--ink)}.toggle{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:7px 14px 7px 8px;font:500 14px var(--body);cursor:pointer;transition:border-color .2s}.toggle:hover{border-color:var(--accent)}.toggle i{width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font-style:normal;font-size:13px;transition:transform .4s}.toggle:active i{transform:rotate(180deg)}@media (max-width:860px){.links a,.toggle b{display:none}.toggle{padding:7px}}.dots{position:fixed;right:20px;top:50%;transform:translateY(-50%);z-index:25;display:flex;flex-direction:column;gap:6px;align-items:flex-end}.dots button{position:relative;display:flex;align-items:center;gap:12px;background:none;border:0;padding:6px;cursor:pointer;color:var(--muted)}.dots button:after{content:"";width:9px;height:9px;border-radius:50%;background:var(--line);transition:all .3s}.dots button.on:after{background:var(--accent);transform:scale(1.5);box-shadow:0 0 0 5px var(--glow)}.dots span{font:500 12px var(--mono);opacity:0;transform:translate(6px);transition:all .25s;pointer-events:none}.dots button:hover span,.dots button.on span{opacity:1;transform:none}@media (max-width:1200px){.dots{display:none}}.rv{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1)}.rv.in{opacity:1;transform:none}.rv .tg{opacity:0;transform:translateY(14px) scale(.94);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1)}.rv.in .tg{opacity:1;transform:none;transition-delay:calc(var(--i)*35ms)}.hero-sec{min-height:100vh;min-height:100svh;display:flex;align-items:center;padding:96px 0 60px}.hero-sec .wrap{width:100%}.status{display:inline-flex;align-items:center;gap:10px;font:500 13px var(--mono);color:var(--muted);border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 70%,transparent);padding:6px 14px;border-radius:999px}.dot{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 var(--ok);animation:ping 2.4s infinite}@keyframes ping{70%{box-shadow:0 0 0 8px transparent}to{box-shadow:0 0 0 0 transparent}}h1{font:800 clamp(34px,5.6vw,72px)/1.02 var(--head);letter-spacing:-.04em;margin:22px 0 20px;max-width:15ch}.w{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.1em;margin-bottom:-.1em}.w span{display:inline-block;transform:translateY(110%);animation:up .9s cubic-bezier(.2,.8,.2,1) forwards;animation-delay:calc(var(--i)*80ms + .15s)}@keyframes up{to{transform:none}}.lead{font-size:clamp(15px,1.4vw,18px);color:var(--muted);max-width:52ch;margin:0 0 20px}.typer{font:500 14px var(--mono);color:var(--muted);margin:0 0 28px;min-height:24px}.typer b{color:var(--accent);font-weight:500}.caret{display:inline-block;width:2px;height:1.1em;background:var(--accent);vertical-align:-3px;margin-left:2px;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.cta{display:flex;gap:12px;flex-wrap:wrap}.btn{display:inline-block;text-decoration:none;font:600 15px var(--body);color:var(--ink);padding:11px 20px;border-radius:11px;border:1px solid var(--line);background:var(--surface);cursor:pointer;transition:transform .2s,border-color .2s}.btn:hover{transform:translateY(-2px);border-color:var(--accent)}.btn:disabled{opacity:.6;cursor:default;transform:none}.btn.p{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);position:relative;overflow:hidden}.btn.p:after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.4),transparent);transform:skew(-20deg);animation:shine 3.6s infinite}@keyframes shine{55%,to{left:140%}}@property --ang{syntax:"<angle>";inherits:false;initial-value:0deg}@keyframes ring{to{--ang:360deg}}@keyframes bob{50%{transform:translateY(-8px)}}.hero-wrap.has-me{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,.7fr);gap:clamp(24px,5vw,72px);align-items:center}.me{margin:0;position:relative;justify-self:center;width:min(100%,290px);aspect-ratio:4/5}.me:before{content:"";position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:999px 999px 34px 34px;background:conic-gradient(from var(--ang),var(--accent),var(--ok),var(--warn),var(--accent));animation:ring 6s linear infinite}.me:after{content:"";position:absolute;top:12%;right:-18%;bottom:-12%;left:-18%;z-index:-1;background:radial-gradient(closest-side,var(--glow),transparent)}.me img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;border-radius:999px 999px 28px 28px;border:4px solid var(--bg);background:var(--surface)}.me figcaption{position:absolute;left:-16px;bottom:28px;font:600 13px var(--mono);padding:8px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--line);box-shadow:0 10px 30px -12px var(--accent);animation:bob 4s ease-in-out infinite}@media (max-width:820px){.hero-wrap.has-me{grid-template-columns:1fr;gap:18px}.me{order:-1;width:104px;aspect-ratio:1;justify-self:start}.me:before,.me img{border-radius:50%}.me figcaption{display:none}}.soc,.social{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}.soc a,.social a{display:inline-flex;align-items:center;justify-content:center;color:var(--muted);border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 70%,transparent);transition:color .2s,border-color .2s,transform .2s,box-shadow .2s;text-decoration:none}.soc a{width:40px;height:40px;border-radius:12px}.soc a svg{width:18px;height:18px}.social a{gap:8px;padding:9px 15px;border-radius:12px;font-weight:500;font-size:14px}.social a svg{width:16px;height:16px}.soc a:hover,.social a:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-3px);box-shadow:0 10px 24px -14px var(--accent)}.band{overflow:hidden;padding:2vh 0 5vh;margin-top:-4vh}.band .row{display:flex;width:max-content;white-space:nowrap;font:800 clamp(38px,6vw,88px)/1.05 var(--head);letter-spacing:-.04em;will-change:transform}.band .row span{padding-right:.4em}.band .r1{animation:mq 45s linear infinite}.band .r2{animation:mq 55s linear infinite reverse;color:transparent;-webkit-text-stroke:1.5px color-mix(in srgb,var(--ink) 55%,transparent)}@keyframes mq{to{transform:translate(-50%)}}.sec{padding:34px 0;scroll-margin-top:70px}.panel{position:relative;padding:clamp(56px,6vw,76px) clamp(22px,4vw,48px) clamp(30px,4vw,48px);border-radius:28px;border:1px solid color-mix(in srgb,var(--line) 80%,transparent);background:color-mix(in srgb,var(--surface) 58%,transparent);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.chap{position:absolute;left:clamp(22px,4vw,48px);top:22px;font:500 13px var(--mono);color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.chap b{color:var(--accent);font-weight:500}h2.big{font:800 clamp(26px,3.6vw,48px)/1.08 var(--head);letter-spacing:-.03em;margin:0 0 14px;max-width:22ch}h2.big em{font-style:normal;color:var(--accent)}.sub{color:var(--muted);max-width:56ch;margin:0 0 36px}h3{font:700 18px var(--head);margin:0 0 10px;letter-spacing:-.01em}.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:36px}.tags{display:flex;flex-wrap:wrap;gap:8px}.tag{font:400 12.5px var(--mono);padding:5px 10px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--surface) 85%,transparent)}.pgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:18px}.pgrid>.rv{display:flex}.pc{position:relative;flex:1;display:flex;flex-direction:column;justify-content:flex-end;gap:12px;min-height:300px;padding:24px;border-radius:22px;border:1px solid var(--line);overflow:hidden;background:linear-gradient(160deg,color-mix(in srgb,var(--c,var(--accent)) 14%,var(--surface)),color-mix(in srgb,var(--surface) 80%,transparent));transition:border-color .3s,transform .4s cubic-bezier(.2,.8,.2,1)}.pc:hover{border-color:var(--c,var(--accent));transform:translateY(-6px)}.pc .no{position:absolute;top:8px;right:18px;font:800 clamp(60px,7vw,84px)/1 var(--head);color:transparent;-webkit-text-stroke:1.5px color-mix(in srgb,var(--c,var(--accent)) 55%,transparent);opacity:.7}.pc h3{font-size:clamp(20px,2vw,24px);margin:0;position:relative}.pc p{margin:0;color:var(--muted);position:relative}.pc .tags{position:relative}.metric{font:800 clamp(26px,2.6vw,34px)/1.1 var(--head);color:var(--c,var(--accent));position:relative}.metric small{display:block;font:400 12px var(--mono);color:var(--muted);margin-top:2px}.plinks{display:flex;gap:18px;font-weight:600;font-size:15px;position:relative}.plinks a{color:var(--c,var(--accent));text-decoration:none}.plinks a:hover{text-decoration:underline}.pipe{border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 85%,transparent);border-radius:18px;padding:22px;max-width:820px}.pipe-top{display:flex;justify-content:space-between;align-items:center;font:400 13px var(--mono);color:var(--muted);margin-bottom:20px;gap:10px;flex-wrap:wrap}.pipe-top button{font:500 13px var(--mono);background:none;border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:5px 12px;cursor:pointer}.pipe-top button:hover{border-color:var(--accent)}.stages{display:grid;grid-template-columns:repeat(5,1fr)}.stage{position:relative;padding:0 6px;text-align:center}.stage:before{content:"";position:absolute;top:18px;left:-50%;width:100%;height:2px;background:var(--line)}.stage:first-child:before{display:none}.stage.done:before,.stage.run:before{background:var(--ok)}.node{position:relative;z-index:1;width:38px;height:38px;margin:0 auto 10px;border-radius:50%;border:2px solid var(--line);background:var(--surface);display:grid;place-items:center;font:600 13px var(--mono);color:var(--muted);transition:all .3s}.stage.done .node{background:var(--ok);border-color:var(--ok);color:var(--surface)}.stage.run .node{border-color:var(--warn);color:var(--warn);animation:pulse 1s infinite}@keyframes pulse{50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--warn) 20%,transparent)}}.stage b{display:block;font-size:14px}.stage small{font:400 12px var(--mono);color:var(--muted)}@media (max-width:600px){.stage small{display:none}.stage b{font-size:12px}.node{width:32px;height:32px}.stage:before{top:15px}}.log{margin-top:20px;padding:14px 16px;border-radius:12px;background:var(--bg);font:400 13px/1.8 var(--mono);color:var(--muted);min-height:110px}.log em{color:var(--ok);font-style:normal}.tl{position:relative;margin-left:8px;padding-left:34px;border-left:2px solid var(--line)}.job{position:relative;margin-bottom:34px}.job:last-child{margin-bottom:0}.job:before{content:"";position:absolute;left:-43px;top:8px;width:12px;height:12px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);animation:beat 2.6s ease-in-out infinite}@keyframes beat{50%{box-shadow:0 0 0 7px var(--glow)}}.job time{font:400 13px var(--mono);color:var(--muted)}.job h3{margin:2px 0 6px;font-size:20px}.job p{margin:0;color:var(--muted);max-width:62ch}.mail{display:inline-block;font:800 clamp(20px,3.4vw,42px)/1.1 var(--head);letter-spacing:-.035em;text-decoration:none;border-bottom:3px solid var(--accent);padding-bottom:4px;word-break:break-all;margin:0 0 10px;transition:color .2s}.mail:hover{color:var(--accent)}.cf{display:grid;gap:10px;max-width:540px;margin-top:24px}.cf .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width:560px){.cf .two{grid-template-columns:1fr}}.cf input,.cf textarea{font:inherit;font-size:15px;color:var(--ink);background:color-mix(in srgb,var(--surface) 85%,transparent);border:1px solid var(--line);border-radius:12px;padding:11px 14px;width:100%}.cf input:focus,.cf textarea:focus{outline:2px solid var(--accent);border-color:transparent}.cf .hp{position:absolute;left:-9999px}.cf .ok{color:var(--ok);font-weight:500;margin:0}.cf .no{color:var(--bad);font-weight:500;margin:0}.cf button{justify-self:start}footer.bottom{padding:30px 0 44px;color:var(--muted);font:400 13px var(--mono)}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}.rv,.rv .tg{opacity:1;transform:none}.w span{transform:none}}.adm{min-height:100vh;display:grid;grid-template-columns:240px 1fr;font-size:16px}.adm aside{position:sticky;top:0;height:100vh;overflow:auto;background:var(--surface);border-right:1px solid var(--line);padding:20px 14px;display:flex;flex-direction:column;gap:4px}.adm .brand{font:800 22px var(--head);margin:4px 10px 18px}.adm .brand span{color:var(--accent)}.adm aside button{display:flex;justify-content:space-between;align-items:center;text-align:left;font:500 15px var(--body);color:var(--muted);background:none;border:0;border-radius:10px;padding:10px 12px;cursor:pointer;transition:background .2s,color .2s}.adm aside button:hover{background:var(--glow);color:var(--ink)}.adm aside button.on{background:var(--accent);color:var(--accent-ink)}.adm aside em{font-style:normal;font:600 12px var(--mono);background:var(--bad);color:#fff;border-radius:999px;padding:1px 8px}.adm .main{padding:20px 32px 60px;max-width:960px;width:100%}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.muted{color:var(--muted)}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:22px}.topbar .actions{margin:0}.card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:26px}.card h2{font:700 26px var(--head);letter-spacing:-.02em;margin:0 0 6px;max-width:none}.row.between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 20px;margin-top:20px}.fld{display:flex;flex-direction:column;gap:6px}.fld.wide{grid-column:1/-1}.fld>label:not(.sw){font:600 14px var(--body)}.fld small{color:var(--muted);font-size:13px}.adm input:not([type=checkbox]):not([type=color]),.adm textarea,.adm select{font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%}.adm textarea{resize:vertical}.adm input:focus,.adm textarea:focus,.adm select:focus{outline:2px solid var(--accent);border-color:transparent}.colorrow{display:flex;gap:10px;align-items:center}.colorrow input[type=color]{width:46px;height:42px;padding:2px;border:1px solid var(--line);border-radius:10px;background:var(--bg);cursor:pointer}.sw{display:flex;align-items:center;gap:12px;font-weight:500;cursor:pointer;padding:8px 0}.sw input{position:absolute;opacity:0}.sw span{width:42px;height:24px;border-radius:999px;background:var(--line);position:relative;flex:none;transition:background .2s}.sw span:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .2s}.sw input:checked+span{background:var(--accent)}.sw input:checked+span:after{transform:translate(18px)}.sw input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}.adm .btn.sm{padding:7px 14px;font-size:14px;border-radius:10px}.adm .btn.danger{color:var(--bad)}.adm .btn.danger:hover{border-color:var(--bad)}.icon{width:34px;height:34px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;font-size:16px}.icon:disabled{opacity:.35;cursor:default}.list{list-style:none;margin:16px 0 0;padding:0}.list li{display:flex;align-items:center;gap:8px;padding:14px 0;border-top:1px solid var(--line);flex-wrap:wrap}.list li.off .grow{opacity:.5}.grow{flex:1;min-width:160px;display:flex;flex-direction:column}.grow small{color:var(--muted);font-size:13px}.msg{border-top:1px solid var(--line);padding:14px 0}.msg summary{display:flex;gap:14px;align-items:baseline;cursor:pointer;flex-wrap:wrap;list-style:none}.msg summary::-webkit-details-marker{display:none}.msg summary span,.msg summary time{color:var(--muted);font-size:14px}.msg summary time{margin-left:auto;font-family:var(--mono);font-size:12.5px}.msg.unread summary b:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:8px}.msg p{white-space:pre-wrap;margin:12px 0 0;color:var(--muted)}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login .card{width:100%;max-width:420px;display:grid;gap:16px}.login .err{color:var(--bad);margin:0;font-weight:500}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--bg);padding:12px 20px;border-radius:12px;font-weight:500;z-index:60;box-shadow:0 10px 30px #00000040}.toast.bad{background:var(--bad);color:#fff}@media (max-width:820px){.adm{grid-template-columns:1fr}.adm aside{position:static;height:auto;flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);padding:10px}.adm .brand{display:none}.adm aside button{white-space:nowrap;gap:8px}.adm .main{padding:16px 16px 60px}.grid{grid-template-columns:1fr}}.fh{grid-column:1/-1;margin:10px 0 -6px;padding-top:18px;border-top:1px solid var(--line);font:700 17px var(--head)}.grid>.fh:first-child{border-top:0;padding-top:0;margin-top:0}.photoRow{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.photoRow .actions{margin:0}.photo{width:120px;aspect-ratio:4/5;border-radius:60px 60px 14px 14px;overflow:hidden;border:1px dashed var(--line);display:grid;place-items:center;background:var(--bg);color:var(--muted);font-size:13px;text-align:center;padding:6px}.photo img{width:100%;height:100%;object-fit:cover;margin:-6px}
