/* Swift Web Dev: VS Code style code windows for blog posts (Prism.js + line numbers). */
.swd-code{--bg:#282a36;--bar:#343746;--fg:#f8f8f2;--muted:#6c7086;--hl:rgba(80,250,123,.12);position:relative;margin:2em 0;border-radius:14px;background:var(--bg);box-shadow:0 22px 50px -24px rgba(10,10,20,.55);overflow:hidden;font-size:.9rem}
.swd-code__bar{display:flex;align-items:center;gap:.55rem;min-height:2.75rem;padding:0 .75rem 0 1rem;background:var(--bar)}
.swd-code__dot{width:.8rem;height:.8rem;border-radius:50%;flex:none}
.swd-code__dot--r{background:#ff5f57}.swd-code__dot--y{background:#febc2e}.swd-code__dot--g{background:#28c840}
.swd-code__lang{margin-left:.75rem;color:#a6accd;font:600 .75rem/1 "Plus Jakarta Sans",system-ui,sans-serif;letter-spacing:.04em;text-transform:uppercase}
.swd-code__copy{display:inline-flex;align-items:center;gap:.4rem;margin-left:auto;min-height:2rem;padding:0 .75rem;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:transparent;color:#e2e4f0;font:600 .78rem/1 "Plus Jakarta Sans",system-ui,sans-serif;cursor:pointer;transition:background .2s,border-color .2s,color .2s}
.swd-code__copy:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.3)}
.swd-code__copy:focus-visible{outline:2px solid #8b93ff;outline-offset:2px}
.swd-code__copy.is-done{color:#50fa7b;border-color:rgba(80,250,123,.5)}
.swd-code pre[class*="language-"],.swd-single-body__prose .swd-code pre{position:relative;margin:0;box-shadow:none;padding:1.1rem 1.25rem 1.25rem 3.6rem;border:0;border-radius:0;background:var(--bg);color:var(--fg);overflow:auto;font:400 .9rem/1.7 "JetBrains Mono","Fira Code",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;tab-size:4;white-space:pre;word-break:normal;word-wrap:normal;text-shadow:none}
.swd-code code[class*="language-"],.swd-single-body__prose .swd-code code{background:none;padding:0;border:0;border-radius:0;color:inherit;font:inherit;white-space:inherit}
/* line numbers */
.swd-code .line-numbers .line-numbers-rows{position:absolute;top:1.1rem;left:0;width:2.9rem;border-right:0;pointer-events:none;user-select:none;font-size:100%;letter-spacing:-1px}
.swd-code .line-numbers-rows>span{display:block;counter-increment:linenumber}
.swd-code .line-numbers-rows>span::before{content:counter(linenumber);display:block;padding-right:.9rem;color:var(--muted);text-align:right}
.swd-code pre.line-numbers{counter-reset:linenumber}
/* highlighted lines (data-line="3,6") */
.swd-code .line-highlight{position:absolute;left:0;right:0;margin-top:1.1rem;background:var(--hl);pointer-events:none;line-height:inherit;white-space:pre}
.swd-code .line-highlight::before,.swd-code .line-highlight::after{content:none}
/* Dracula-style tokens */
.swd-code .token.comment,.swd-code .token.prolog,.swd-code .token.doctype,.swd-code .token.cdata{color:#6272a4;font-style:italic}
.swd-code .token.punctuation{color:#f8f8f2}
.swd-code .token.tag,.swd-code .token.keyword,.swd-code .token.selector,.swd-code .token.important,.swd-code .token.atrule,.swd-code .token.deleted{color:#ff79c6}
.swd-code .token.attr-name,.swd-code .token.function,.swd-code .token.class-name,.swd-code .token.builtin,.swd-code .token.inserted{color:#50fa7b}
.swd-code .token.attr-name{font-style:italic}
.swd-code .token.string,.swd-code .token.attr-value,.swd-code .token.char,.swd-code .token.regex,.swd-code .token.url{color:#f1fa8c}
.swd-code .token.number,.swd-code .token.boolean,.swd-code .token.constant,.swd-code .token.entity,.swd-code .token.symbol{color:#bd93f9}
.swd-code .token.variable,.swd-code .token.parameter,.swd-code .token.property{color:#8be9fd}
.swd-code .token.operator{color:#ff79c6}
.swd-code .token.php,.swd-code .token.delimiter{color:#ff79c6}
.swd-code .token.bold{font-weight:700}.swd-code .token.italic{font-style:italic}
.swd-code pre::-webkit-scrollbar{height:10px}.swd-code pre::-webkit-scrollbar-thumb{background:#44475a;border-radius:10px}
@media (max-width:640px){.swd-code{margin-inline:-.5rem;border-radius:12px;font-size:.82rem}.swd-code pre[class*="language-"],.swd-single-body__prose .swd-code pre{padding-left:3.1rem;font-size:.82rem}.swd-code .line-numbers .line-numbers-rows{width:2.5rem}}
