body.dev{--screen:#0E1210;--panel:#121815;--line:#1F2824;--chip-line:#2A3530;--text:#E7EAE6;--soft:#C9CFCA;--dim:#9AA39D;--green:#7FD99A;--amber:#E8B86B;--sans:"Inter", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;margin:0;min-height:100vh;background:var(--screen);color:var(--text);font-family:var(--sans)}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}.dev a{color:var(--text)}.dev a:hover{color:var(--green)}.dev a:focus-visible{outline:2px solid var(--green);outline-offset:3px}.dev-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.dev-wrap{max-width:1180px;margin:0 auto;padding:0 24px}.dev-cmd{margin:0;font-family:var(--mono);font-size:15px;font-weight:400;color:var(--dim)}.dev-intro{border-bottom:1px solid var(--line)}.dev-header{max-width:1180px;margin:0 auto;padding:14px 24px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-family:var(--mono);font-size:14px}.dev .dev-prompt-home{padding:10px 0;color:var(--dim);text-decoration:none}.dev-prompt-home span{color:var(--green)}.dev-nav{display:flex;flex-wrap:wrap;gap:2px}.dev-nav a{padding:12px 10px;text-decoration:none}.dev-langs{padding:12px 10px;color:var(--dim)}.dev .dev-langs a{color:var(--dim);text-decoration:none}.dev .dev-langs a[aria-current=page]{color:var(--text)}.dev .dev-langs a:hover{color:var(--green)}.dev-intro-head{padding-top:72px;display:flex;flex-direction:column;gap:18px}.dev-name{margin:0;font-family:var(--mono);font-weight:800;font-size:clamp(44px,8.4vw,108px);line-height:.98;letter-spacing:-.04em}.dev-name span{color:var(--green)}.dev-strings-box{position:relative;margin:8px 0}.dev-strings{display:block;width:100%;height:clamp(220px,32vw,420px);object-fit:cover}.dev [hidden]{display:none}.dev-strings,.dev-strings-live{transition:opacity .7s ease}.dev-strings-live{position:absolute;inset:0;opacity:0}.dev-strings-box.is-playing .dev-strings{opacity:0}.dev-strings-box.is-playing .dev-strings-live{opacity:1}@media(prefers-reduced-motion:reduce){.dev-strings,.dev-strings-live{transition:none}}.dev-strings-live svg{display:block;width:100%;height:100%;touch-action:pan-y}.dev-strings-live [data-layer=waves]{stroke:var(--green)}.dev-strings-live [data-layer=strings]{stroke:var(--text)}.dev-strings-ui{display:flex;justify-content:center}.dev-strings-controls{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;column-gap:12px}.dev-strings-hint{flex-basis:100%;text-align:center;font-size:13px;color:var(--dim)}.dev-strings-ui button{min-height:44px;padding:0 6px;border:0;background:0 0;color:var(--dim);font:inherit;cursor:pointer}.dev-strings-ui button:hover{color:var(--green)}.dev-strings-ui button:focus-visible{outline:2px solid var(--green);outline-offset:2px}.dev-strings-ui button:disabled{opacity:.45;cursor:default}.dev-strings-ui button:disabled:hover{color:var(--dim)}.dev-intro-body{padding-bottom:80px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:32px 64px}.dev-intro-text{flex:999 1 520px;min-width:0;display:flex;flex-direction:column;gap:16px}.dev-tagline{margin:0;font-size:clamp(26px,3.2vw,38px);font-weight:600;line-height:1.2;letter-spacing:-.01em}.dev-typing{display:grid}.dev-typing>*{grid-area:1/1}.dev-typing-spacer{--typed:999;visibility:hidden}.dev-typing-line{--typed:0;--on:0;animation-name:dev-type;animation-timing-function:linear;animation-iteration-count:infinite;animation-delay:calc(var(--i) * 5s)}.dev-typing-word{white-space:nowrap}.dev-typing-char{display:inline-block;overflow:hidden;vertical-align:top;white-space:pre;max-width:calc(clamp(0,var(--typed) - var(--k),1) * 1em)}.dev-typing-line::after{content:"";display:inline-block;width:.5em;height:1em;margin-left:.06em;vertical-align:-.12em;background:var(--green);opacity:var(--on);animation:dev-blink 1s steps(1)infinite}@keyframes dev-blink{50%{visibility:hidden}}@media(prefers-reduced-motion:reduce){.dev-typing-line{animation:none}.dev-typing-line.is-main{--typed:999}.dev-typing-line::after{display:none}}.dev-lead{margin:0;max-width:620px;font-size:18px;line-height:1.6;color:var(--soft)}.dev-lead strong{font-weight:600;color:var(--text)}.dev-contact{flex:1 1 260px;display:flex;flex-direction:column;gap:10px;font-family:var(--mono);font-size:14px}.dev .dev-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;border-radius:6px;background:var(--green);color:var(--screen);font-weight:700;text-decoration:none}.dev .dev-button:hover{background:var(--text);color:var(--screen)}.dev-contact-links{display:flex;justify-content:center;gap:20px}.dev-contact-links a{padding:10px 0}@media(max-width:891px){.dev-intro-body{flex-direction:column;align-items:stretch;gap:0}.dev-intro-text{flex:none;margin-bottom:32px}.dev-contact{display:contents}.dev-strings-ui{order:-1;justify-content:flex-start}.dev-strings-ui>*{margin-bottom:16px}.dev-strings-controls{justify-content:flex-start}.dev-strings-hint{text-align:left}.dev-strings-play,.dev-strings-controls [data-action=pluck]{margin-left:-6px}.dev-contact-links{margin-top:10px}}.dev-sections{display:flex;flex-direction:column;gap:112px}.dev-section{scroll-margin-top:24px;display:flex;flex-direction:column;gap:20px}.dev-section:first-child{padding-top:112px}#highlights{gap:28px}.dev-highlights{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:1fr;gap:1px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--line)}@media(min-width:600px){.dev-highlights{grid-template-columns:repeat(2,1fr)}}@media(min-width:1100px){.dev-highlights{grid-template-columns:repeat(4,1fr)}}.dev-highlights li{padding:32px 28px;display:flex;flex-direction:column;gap:12px;background:var(--screen)}.dev-highlight-value{font-family:var(--mono);font-weight:800;font-size:52px;letter-spacing:-.03em;color:var(--green)}.dev-highlight-label{line-height:1.55;color:var(--soft)}.dev-log{margin:0;padding:0;list-style:none;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.dev-commit{padding:24px 28px;display:flex;flex-wrap:wrap;gap:10px 32px}.dev-commit+.dev-commit{border-top:1px solid var(--line)}.dev-commit-meta{flex:0 0 200px;display:flex;flex-direction:column;gap:4px;font-family:var(--mono);font-size:13px;color:var(--dim)}.dev-commit-hash{color:var(--amber)}.dev-commit-body{flex:1 1 420px;min-width:0;display:flex;flex-direction:column;gap:6px}.dev-commit-title{margin:0;font-family:var(--mono);font-size:17px;font-weight:400}.dev-commit-type{color:var(--green)}.dev-commit-body p{margin:0;line-height:1.6;color:var(--soft)}.dev-fold,.dev-fold+.dev-commit{border-top:1px solid var(--line)}.dev-fold summary{display:flex;align-items:center;gap:8px;min-height:52px;padding:0 28px;font-family:var(--mono);font-size:13px;color:var(--dim);list-style:none;cursor:pointer}.dev-fold summary::-webkit-details-marker{display:none}.dev-fold summary::after{content:"[+]"}.dev-fold details[open] summary::after{content:"[−]"}.dev-fold summary:hover{color:var(--green)}.dev-fold summary:focus-visible{outline:2px solid var(--green);outline-offset:-2px;border-radius:10px}.dev-log-folded{margin:0;padding:0;list-style:none}.dev-log-folded .dev-commit{border-top:1px solid var(--line)}.dev-log-folded .dev-commit-title{color:var(--soft)}.dev-log-folded .dev-commit-body p{color:var(--dim)}.dev-stack{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:10px;font-family:var(--mono);font-size:14px}.dev-stack li{padding:8px 14px;border:1px solid var(--chip-line);border-radius:999px}#about{gap:24px}.dev-about{display:flex;flex-wrap:wrap;align-items:center;gap:40px}.dev-photo{flex:none;width:240px;height:240px;object-fit:cover;border-radius:10px}.dev-about-text{flex:1 1 420px;display:flex;flex-direction:column;gap:16px;font-size:18px;line-height:1.7;color:var(--soft)}.dev-about-text p{margin:0}.dev .dev-more{align-self:flex-start;padding:8px 0;font-family:var(--mono);font-size:15px;color:var(--green);text-decoration:none}.dev .dev-more:hover{color:var(--text)}.dev-footer{padding:32px 0 48px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;font-family:var(--mono);font-size:13px;color:var(--dim)}/* Registered counters for the typed tagline (see dev.css). Kept apart because Hugo's CSS minifier drops @property rules. */

@property --typed {
  syntax: "<integer>";
  inherits: true;
  initial-value: 0;
}

@property --on {
  syntax: "<integer>";
  inherits: true;
  initial-value: 0;
}
