@font-face{font-family:varela round;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/varela-round-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:varela round;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/varela-round-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:cormorant garamond;font-style:italic;font-weight:500 600;font-display:swap;src:url(/fonts/cormorant-garamond-italic-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:cormorant garamond;font-style:italic;font-weight:500 600;font-display:swap;src:url(/fonts/cormorant-garamond-italic-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg:#f6f7f9;--surface:#ffffff;--text:#1f2933;--muted:#61707f;--border:#e3e7ec;--accent:#e8700f;--accent-strong:#b9560a;--accent-text:#ffffff;--accent-soft:#fdeedf;--code-bg:#f3f4f6;--shadow:0 1px 2px rgb(16 24 40 / 6%), 0 1px 3px rgb(16 24 40 / 10%);--shadow-hover:0 12px 24px -6px rgb(16 24 40 / 18%);--radius:12px;--font:"Varela Round", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-quote:"Cormorant Garamond", "Iowan Old Style", Georgia, serif;--hero-bg:#0b1830;--band-text:#e8eef7;--band-muted:#9aabc3;--band-line:rgb(255 255 255 / 9%);--band-accent:#ff8a2b;--band-accent-text:#1a1206;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e1a2e;--surface:#15243d;--text:#e3eaf4;--muted:#9aabc3;--border:#243a5a;--accent:#ff8a2b;--accent-strong:#ffa65c;--accent-text:#1a1206;--accent-soft:rgb(255 138 43 / 14%);--code-bg:#0a1424;--shadow:0 1px 2px rgb(2 8 20 / 45%);--shadow-hover:0 12px 24px -6px rgb(2 8 20 / 65%);--hero-bg:#08121f;color-scheme:dark}}:root[data-theme=dark]{--bg:#0e1a2e;--surface:#15243d;--text:#e3eaf4;--muted:#9aabc3;--border:#243a5a;--accent:#ff8a2b;--accent-strong:#ffa65c;--accent-text:#1a1206;--accent-soft:rgb(255 138 43 / 14%);--code-bg:#0a1424;--shadow:0 1px 2px rgb(2 8 20 / 45%);--shadow-hover:0 12px 24px -6px rgb(2 8 20 / 65%);--hero-bg:#08121f;color-scheme:dark}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:76px}body{display:flex;flex-direction:column;min-height:100vh;margin:0;background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.65}a{color:inherit}h1,h2,h3,h4,h5,h6{font-weight:400}img{display:block;max-width:100%;height:auto}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}main{flex:1}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 16px}.container--narrow{max-width:860px}.muted{color:var(--muted)}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:16px;top:8px;z-index:20;padding:6px 12px;border-radius:8px;background:var(--accent);color:var(--accent-text)}.site-header{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--surface) 85%,transparent);backdrop-filter:saturate(180%)blur(10px);border-bottom:1px solid var(--border)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px}.brand{display:inline-flex;align-items:center;gap:10px;font-family:var(--font);font-size:1.35rem;text-decoration:none;white-space:nowrap}.site-nav{display:flex;gap:4px;margin-left:auto}.site-nav a{padding:6px 10px;border-radius:8px;color:var(--muted);font-size:.95rem;text-decoration:none}.site-nav a:hover,.site-nav a[aria-current]{color:var(--text);background:var(--bg)}.site-nav a[aria-current]{box-shadow:inset 0 -2px 0 var(--accent)}.site-header__actions{display:flex;gap:8px}.icon-btn{display:inline-flex;padding:6px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer}.icon-btn:hover{border-color:var(--accent);color:var(--accent)}.theme-toggle__sun{display:none}:root[data-theme=dark] .theme-toggle__sun{display:block}:root[data-theme=dark] .theme-toggle__moon{display:none}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle__sun{display:block}:root:not([data-theme=light]) .theme-toggle__moon{display:none}}.nav-toggle{display:none}@media(max-width:720px){.site-header__inner{flex-wrap:wrap}.nav-toggle{display:inline-flex}.site-nav{display:none;flex-direction:column;order:3;width:100%;padding-bottom:12px}.site-header[data-open] .site-nav{display:flex}}.hero{padding-top:48px;padding-bottom:24px}.hero h1,.page-head h1{margin:0 0 8px;font-family:var(--font);font-size:clamp(1.9rem,4vw,2.75rem);font-weight:400;line-height:1.15}.lead{max-width:62ch;margin:0 0 8px;font-size:1.1rem}.hero--image{position:relative;padding:0;overflow:hidden;color:#fff;background:var(--hero-bg)}.hero--image img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.55}.hero--image .container{position:relative;padding-top:clamp(64px,12vw,140px);padding-bottom:clamp(56px,10vw,120px)}.hero--image .lead{color:rgb(255 255 255/.9)}.hero__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.slider{position:relative;overflow:hidden;color:#fff;background:var(--hero-bg)}.slider__track{display:grid}.slide{position:relative;grid-area:1/1;opacity:0;visibility:hidden;transition:opacity .8s ease,visibility .8s}.slide[data-active]{opacity:1;visibility:visible}.slide>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scale(1.04);transition:transform 7s ease-out}.slide[data-active]>img{transform:scale(1)}.slide::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgb(8 18 31/.8) 0%,rgb(8 18 31/.6) 35%,rgb(8 18 31/15%) 65%,rgb(8 18 31/0%) 85%)}.slide h1,.slide h2,.slide .slide__title,.slide .lead{text-shadow:0 1px 12px rgb(8 18 31/55%)}.slide .container{position:relative;z-index:1;display:flex;flex-direction:column;justify-content:center;min-height:clamp(380px,52vh,560px);padding-top:48px;padding-bottom:72px}.slide h1,.slide h2,.slide .slide__title{max-width:20ch;margin:0 0 10px;font-size:clamp(1.9rem,4.2vw,3rem);font-weight:400;line-height:1.15}.slide .lead{color:rgb(255 255 255/.9)}.slide .slide__eyebrow{max-width:none;margin:0 0 12px;color:var(--band-accent);font-size:.85rem;letter-spacing:.12em;line-height:1.4;text-transform:uppercase}.slider__controls{position:absolute;right:0;bottom:20px;left:0;z-index:2}.slider__controls .container{display:flex;align-items:center;gap:12px}.slider__dots{display:flex;gap:8px;margin:0;padding:0;list-style:none}.slider__dot{width:28px;height:6px;padding:0;border:0;border-radius:999px;background:rgb(255 255 255/.4);cursor:pointer;transition:background-color .2s,width .2s}.slider__dot[aria-current=true]{width:44px;background:var(--accent)}.slider__nav{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:1px solid rgb(255 255 255/.4);border-radius:999px;background:rgb(8 18 31/35%);color:#fff;cursor:pointer}.slider__nav:hover{border-color:#fff;background:rgb(255 255 255/15%)}.slider__nav:first-of-type{margin-left:auto}.page-head{padding-top:40px;padding-bottom:16px}.container>.meta{margin-bottom:20px}.page-head .lead{max-width:none;color:var(--muted)}.breadcrumbs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px;padding:0;list-style:none;color:var(--muted);font-size:.85rem}.breadcrumbs li+li::before{content:"›";margin-right:6px}.breadcrumbs a{text-decoration:none}.breadcrumbs a:hover{color:var(--accent)}.meta{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;color:var(--muted);font-size:.9rem}.meta a{text-decoration:none}.meta a:hover{color:var(--accent)}.rating{color:var(--accent);letter-spacing:.1em}.section{padding-top:32px;padding-bottom:32px}.section__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:20px}.section__head h2,.group-title{margin:0;font-family:var(--font);font-size:1.6rem;font-weight:400}.group-title{margin:32px 0 16px;font-size:1.3rem}.link-more{color:var(--accent);font-weight:500;text-decoration:none}.link-more:hover{text-decoration:underline}.filter{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 24px}.filter__btn{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:.95rem;cursor:pointer;transition:background-color .15s,border-color .15s}.filter__btn:hover{border-color:var(--accent)}.filter__btn[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.filter__count{min-width:1.6em;padding:0 6px;border-radius:999px;background:var(--bg);color:var(--muted);font-size:.8rem;text-align:center}.filter__btn[aria-pressed=true] .filter__count{background:rgb(255 255 255/25%);color:inherit}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:24px;margin:0 0 48px;padding:0;list-style:none}.grid--4{grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr))}.card{position:relative;display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:transform .2s ease,box-shadow .2s ease}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover)}.card[hidden]{display:none}.card__media{position:relative;display:block;aspect-ratio:2/1;background:var(--bg);border-bottom:1px solid var(--border)}.card__media{overflow:hidden}.card__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.card__icon{display:inline-flex;flex:none;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;background:var(--accent-soft);color:var(--accent)}.card__icon svg{width:22px;height:22px}.card__icon svg:not([fill]){fill:currentColor}.badge{position:absolute;top:8px;left:8px;padding:2px 8px;border-radius:6px;background:var(--accent);color:var(--accent-text);font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.card__body{flex:1;padding:16px 18px 18px}.card__head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.card__heading{min-width:0}.card__head .card__title{margin:0}.card__meta{margin:0 0 4px;color:var(--muted);font-size:.8rem;letter-spacing:.03em;text-transform:uppercase}.card__title{margin:0 0 6px;font-size:1.1rem;line-height:1.3}.card__title a{text-decoration:none}.card__title a::after{content:"";position:absolute;inset:0}.card:hover .card__title a{color:var(--accent)}.card__text{margin:0;color:var(--muted);font-size:.95rem}.card--feature .card__body{padding:22px}.btn{display:inline-block;padding:8px 16px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:var(--accent-text);font:inherit;font-size:.95rem;font-weight:500;text-decoration:none;cursor:pointer;transition:filter .15s,background-color .15s}.btn:hover{filter:brightness(1.08)}.btn--ghost{background:0 0;color:var(--accent)}.btn--ghost:hover{background:var(--accent-soft);filter:none}.slide .btn--ghost,.hero--image .btn--ghost{border-color:#fff;color:#fff}.slide .btn--ghost:hover,.hero--image .btn--ghost:hover{background:rgb(255 255 255/15%)}.about-band{position:relative;overflow:hidden;margin-top:40px;color:var(--band-text);background:radial-gradient(600px 320px at 85% 15%,rgb(255 138 43/16%),transparent 70%),radial-gradient(1px 1px at 1px 1px,var(--band-line) 1px,transparent 0)0 0/22px 22px,var(--hero-bg)}.about-band__inner{display:grid;grid-template-columns:minmax(0,1.05fr)minmax(0,1fr);gap:56px;align-items:start;padding-top:72px;padding-bottom:72px}@media(max-width:860px){.about-band__inner{grid-template-columns:minmax(0,1fr);gap:48px;padding-top:56px;padding-bottom:56px}}.about-band a{color:inherit}.about-band :focus-visible{outline-color:var(--band-accent)}.eyebrow{margin:0 0 14px;color:var(--band-accent);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase}.person{display:flex;align-items:center;gap:20px}.person__avatar{display:grid;flex:none;place-items:center;width:92px;height:92px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#1d3a66,#12233f);box-shadow:0 0 0 3px var(--hero-bg),0 0 0 5px var(--band-accent),0 10px 30px -6px rgb(255 138 43/45%);color:#fff;font-size:2rem;letter-spacing:.02em}.person__avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover}.person__name{margin:0;font-size:clamp(1.6rem,3vw,2.1rem);line-height:1.2;text-wrap:balance}.person__place{margin:4px 0 0;color:var(--band-muted)}.person__text{max-width:58ch;margin-top:24px;opacity:.9}.person__text p{margin:0}.person__text strong{padding:0 6px;border-radius:6px;background:rgb(255 138 43/18%);color:#fff;font-weight:400}.chips{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0 0;padding:0;list-style:none}.chips a{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border:1px solid var(--band-line);border-radius:999px;background:rgb(255 255 255/6%);font-size:.85rem;text-decoration:none;transition:border-color .2s,background-color .2s}.chips a:hover,.chips a:focus-visible{border-color:var(--band-accent);background:rgb(255 138 43/12%)}.chips svg{width:15px;height:15px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:36px 0 0;padding:0;list-style:none}.stats li{padding-top:16px;border-top:1px solid var(--band-line)}.stats b{display:block;color:#fff;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:400;font-variant-numeric:tabular-nums;line-height:1}.stats b small{display:inline-block;margin-left:3px;color:var(--band-accent);font-size:.72em;line-height:1;vertical-align:.14em}.stats span{display:block;margin-top:8px;color:var(--band-muted);font-size:.85rem}@media(max-width:480px){.person{align-items:flex-start}.person__avatar{width:72px;height:72px;font-size:1.6rem}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.quote{position:relative;margin:30px 0 0;padding:30px 24px 18px;border:1px solid var(--band-line);border-radius:20px;background:linear-gradient(160deg,rgb(255 255 255/6%),rgb(255 255 255/1%))}.quote__mark{position:absolute;top:-19px;left:22px;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--band-accent);box-shadow:0 0 0 5px var(--hero-bg),0 8px 20px -6px rgb(255 138 43/55%);color:var(--band-accent-text)}.quote__mark svg{width:17px;height:17px}.quote p{margin:0;color:#fff;font-family:var(--font-quote);font-size:clamp(1.2rem,1.8vw,1.4rem);font-style:italic;font-weight:500;line-height:1.4;text-wrap:pretty}.quote em{color:var(--band-accent);font-weight:600}.quote footer{margin-top:14px;padding-top:12px;border-top:1px solid var(--band-line)}.quote cite{display:grid;font-style:normal;line-height:1.35}.quote cite b{font-size:.92rem;font-weight:400}.quote cite span{color:var(--band-muted);font-size:.78rem}.tile{display:grid;gap:14px;margin-top:28px;padding:20px;border:1px solid var(--band-line);border-radius:20px;background:linear-gradient(160deg,rgb(255 255 255/7%),rgb(255 255 255/2%));transition:background .4s,border-color .4s,box-shadow .4s}.tile[data-on]{border-color:rgb(255 138 43/.6);background:linear-gradient(160deg,rgb(255 138 43/26%),rgb(255 138 43/8%));box-shadow:0 18px 50px -14px rgb(255 138 43/55%)}.tile__head{display:flex;align-items:center;gap:14px}.tile__icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:rgb(255 255 255/8%);color:var(--band-muted);transition:background-color .4s,color .4s}.tile[data-on] .tile__icon{background:var(--band-accent);color:var(--band-accent-text)}.tile__icon svg{width:22px;height:22px;transform-origin:50% 10%}.tile[data-on] .tile__icon svg{animation:tile-ring .7s ease}@keyframes tile-ring{20%{transform:rotate(16deg)}40%{transform:rotate(-14deg)}60%{transform:rotate(8deg)}80%{transform:rotate(-4deg)}}.tile__title{flex:1;min-width:0}.tile__title b{display:block;font-size:1.05rem;font-weight:400}.tile__state{color:var(--band-muted);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase}.tile[data-on] .tile__state{color:#ffd2ad}.toggle{position:relative;flex:none;width:58px;height:32px;padding:0;border:0;border-radius:999px;background:rgb(255 255 255/16%);cursor:pointer;transition:background-color .3s}.toggle::after{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgb(0 0 0/35%);transition:transform .3s cubic-bezier(.3,1.5,.5,1)}.toggle[aria-checked=true]{background:var(--band-accent)}.toggle[aria-checked=true]::after{transform:translateX(26px)}.tile__text{margin:0;color:var(--band-muted);font-size:.92rem}.tile__form{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease}.tile[data-on] .tile__form{grid-template-rows:1fr}.tile__form form{display:grid;gap:12px;min-height:0;overflow:hidden}.tile__form .hidden{display:none}.tile__fields{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}.tile .field{flex:1 1 200px;min-width:0;padding:10px 14px;border:1px solid var(--band-line);border-radius:10px;background:rgb(0 0 0/25%);color:var(--band-text);font:inherit;font-size:.95rem}.tile .field::placeholder{color:var(--band-muted)}.tile .field:focus{border-color:var(--band-accent);outline:none}.tile__check{display:flex;align-items:flex-start;gap:10px;color:var(--band-muted);font-size:.8rem;line-height:1.5}.tile__check input{flex:none;margin-top:3px;accent-color:var(--band-accent)}.tile .btn{justify-self:start;border-color:var(--band-accent);background:var(--band-accent);color:var(--band-accent-text)}.tile noscript .btn{justify-self:start}.prose :is(.repo,.fazit){position:relative;display:flex;gap:16px 20px;margin:2.6em 0 2em;padding:30px 24px 20px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border));border-radius:20px;background:linear-gradient(160deg,var(--accent-soft),var(--surface) 60%)}.highlight__icon{position:absolute;top:-19px;left:22px;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px var(--bg),0 8px 20px -6px var(--accent);color:var(--accent-text)}.highlight__icon svg{width:18px;height:18px}.highlight__body{flex:1 1 260px;min-width:0}.prose .highlight__label{margin:0;color:var(--accent-strong);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase}.prose .repo{flex-wrap:wrap;align-items:center}.prose .repo p{margin:0}.prose .repo__name{display:inline-block;margin-top:2px;color:var(--muted);font-size:1.15rem;text-decoration:none;overflow-wrap:anywhere}.prose .repo__name b{color:var(--text);font-weight:400}.prose .repo__name:hover b{color:var(--accent)}.prose .repo__text{margin-top:4px;color:var(--muted);font-size:.92rem}.prose .repo__meta{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none}.prose .repo__meta li{margin:0;padding:2px 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font-size:.78rem}.prose .repo__btn{flex:none;color:var(--accent-text);text-decoration:none}.prose .repo__btn:hover{color:var(--accent-text)}.prose .fazit{align-items:flex-start}.prose .fazit__title{margin:2px 0 0;font-size:1.15rem;line-height:1.35}.fazit__text{margin-top:6px}.fazit__text>:first-child{margin-top:0}.fazit__text>:last-child{margin-bottom:0}.catalog{margin:48px 0 32px}.catalog__intro{margin-bottom:20px}.catalog__intro .group-title{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-bottom:8px}.catalog__total{padding:2px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-size:.8rem}.catalog__intro p{margin:0}.catalog__groups{columns:340px 3;column-gap:20px}.catalog__group{display:inline-block;width:100%;margin-bottom:20px;padding:18px 20px 20px;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow);break-inside:avoid;transition:border-color .2s,box-shadow .2s}.catalog__group:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--border));box-shadow:var(--shadow-hover)}.catalog__head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.catalog__icon{display:grid;flex:none;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent)}.catalog__icon svg{width:20px;height:20px}.catalog__head h3{flex:1;margin:0;font-size:1.15rem}.catalog__count{min-width:28px;padding:2px 8px;border-radius:999px;background:var(--bg);color:var(--muted);font-size:.8rem;font-variant-numeric:tabular-nums;text-align:center}.catalog__items{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.catalog__items li{padding:4px 11px;border:1px solid var(--border);border-radius:999px;background:var(--bg);font-size:.88rem;line-height:1.4}.catalog__items small{color:var(--muted);font-size:.8em}.article{padding-bottom:48px}.article__image{margin:8px 0 28px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius)}.article__image img{width:100%;max-height:420px;object-fit:cover}.layout{display:grid;grid-template-columns:minmax(0,1fr)260px;gap:40px;align-items:start}@media(max-width:960px){.layout{grid-template-columns:minmax(0,1fr)}.toc{display:none}}.toc{position:sticky;top:84px;max-height:calc(100vh - 100px);overflow:auto;padding:16px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem}.toc__title{margin:0 0 8px;color:var(--muted);font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.toc ul{margin:0;padding-left:14px}.toc>nav>ul{padding-left:0;list-style:none}.toc li{margin:4px 0}.toc li:not(:has(>a))>ul{padding-left:0;list-style:none}.toc a{color:var(--muted);text-decoration:none}.toc a:hover{color:var(--accent)}.pager{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:40px}.pager a{display:block;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);text-decoration:none}.pager a:hover{border-color:var(--accent)}.pager span{display:block;color:var(--muted);font-size:.8rem}.pager__next{grid-column:2;text-align:right}.tags{display:flex;flex-wrap:wrap;gap:6px;margin:32px 0 0;padding:0;list-style:none}.tags a{display:inline-block;padding:3px 10px;border:1px solid var(--border);border-radius:999px;color:var(--muted);font-size:.85rem;text-decoration:none}.tags a:hover{border-color:var(--accent);color:var(--accent)}.prose{min-width:0;font-size:1.02rem}.prose>:first-child{margin-top:0}.intro{margin-bottom:24px}.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{margin:2em 0 .6em;line-height:1.3}.prose h2{padding-bottom:6px;border-bottom:1px solid var(--border);font-family:var(--font);font-size:1.6rem;font-weight:400}.prose h3{font-size:1.25rem}.prose h4{font-size:1.08rem}.prose .anchor{margin-left:6px;color:var(--muted);text-decoration:none;opacity:0}.prose .anchor::before{content:"#"}.prose :is(h2,h3,h4):hover .anchor{opacity:1}.prose a{color:var(--accent-strong);text-decoration-thickness:1px;text-underline-offset:2px}.prose a:hover{color:var(--accent)}.prose img{display:inline-block;border-radius:6px}.prose p>a>img[src*="/images/badges/"]{display:inline-block;margin:0 4px 4px 0;border-radius:0;vertical-align:middle}.prose blockquote{margin:1.5em 0;padding:4px 18px;border-left:4px solid var(--accent);background:var(--accent-soft);border-radius:0 8px 8px 0}.prose hr{margin:2.5em 0;border:0;border-top:1px solid var(--border)}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.25em}.prose .tags{padding:0}.prose .tags li+li{margin-top:0}.prose img.img-float{float:left;max-width:min(40%,320px);margin:4px 24px 12px 0}.prose :is(h2,h3,h4,pre,table,figure,.tags,.repo,.fazit){clear:both}@media(max-width:560px){.prose img.img-float{float:none;display:block;max-width:100%;margin:0 0 12px}}.prose code,.prose pre{font-family:ui-monospace,cascadia code,Consolas,liberation mono,monospace}.prose :not(pre)>code{padding:.15em .4em;border-radius:6px;background:var(--code-bg);font-size:.88em;overflow-wrap:anywhere}.prose pre{margin:1.4em 0;padding:14px 16px;overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:var(--code-bg)!important;font-size:.87rem;line-height:1.5}.prose .table{margin:1.4em 0;overflow-x:auto;border:1px solid var(--border);border-radius:10px}.prose table{width:100%;border-collapse:collapse;font-size:.92rem}.prose th,.prose td{padding:8px 12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.prose th{background:var(--bg);font-weight:600}.prose tr:last-child td{border-bottom:0}.prose figure{width:fit-content;max-width:100%;margin:1.6em auto}.prose figure img{display:block;border:1px solid var(--border);border-radius:10px}.prose figcaption{contain:inline-size;margin-top:6px;color:var(--muted);font-size:.88rem;text-align:center}.prose .figure-row{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:16px 24px;margin:1.6em 0;clear:both}.prose .figure-row figure{flex:0 1 calc(50% - 12px);width:auto;margin:0}.prose .figure-row img{width:auto;max-width:100%;height:auto;margin-inline:auto}@media(max-width:560px){.prose .figure-row figure{flex-basis:100%}}.prose p>img:only-child:not(.img-float){display:block;margin-inline:auto}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,180px),1fr));gap:12px;margin:1.6em 0}.gallery figure{width:auto;margin:0}.gallery .figure-row{display:contents}.gallery img{width:100%;aspect-ratio:3/4;object-fit:cover}.video{position:relative;margin:1.6em 0;aspect-ratio:16/9;overflow:hidden;border-radius:10px}.video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.video--consent{background:var(--hero-bg)}.video--consent>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.video__play{position:absolute;inset:0;display:grid;place-items:center;width:100%;padding:0;border:0;background:rgb(0 0 0/15%);cursor:pointer;transition:background-color .2s}.video__play:hover,.video__play:focus-visible{background:rgb(0 0 0/.3)}.video__play svg{filter:drop-shadow(0 4px 12px rgb(0 0 0/.4))}.prose .video__note{position:absolute;right:0;bottom:0;left:0;margin:0;padding:8px 14px;background:rgb(8 18 31/75%);color:#fff;font-size:.8rem}.prose .video__note a{color:#fff}.form{display:grid;gap:16px;max-width:640px;margin:1.4em 0;padding:24px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.form label{display:grid;gap:6px;font-size:.95rem;font-weight:500}.form input,.form textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit}.form input:focus,.form textarea:focus{border-color:var(--accent);outline:none}.form .check{display:flex;align-items:flex-start;gap:10px;font-weight:400}.form .check input{width:auto;margin-top:4px}.form .hidden{display:none}.site-footer{border-top:1px solid var(--border);background:var(--surface);font-size:.9rem}.site-footer__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding-top:20px;padding-bottom:20px}.site-footer p{margin:0}.site-footer a{text-decoration:none}.site-footer a:hover{color:var(--accent)}.footer-nav{display:flex;flex-wrap:wrap;gap:4px 16px;margin:0;padding:0;list-style:none}.social{display:flex;gap:4px;margin:0;padding:0;list-style:none}.social a{display:inline-flex;padding:6px;border-radius:8px;color:var(--muted)}.social a:hover{color:var(--accent);background:var(--bg)}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.form__error{margin:0;padding:10px 14px;border-left:4px solid #d93025;border-radius:0 8px 8px 0;background:rgb(217 48 37/.1)}.chroma .err{color:#f6f8fa;background-color:#82071e}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .or{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .chroma .err{color:#f85149}:root:not([data-theme=light]) .chroma .k{color:#ff7b72}:root:not([data-theme=light]) .chroma .kc{color:#79c0ff}:root:not([data-theme=light]) .chroma .kd{color:#ff7b72}:root:not([data-theme=light]) .chroma .kn{color:#ff7b72}:root:not([data-theme=light]) .chroma .kp{color:#79c0ff}:root:not([data-theme=light]) .chroma .kr{color:#ff7b72}:root:not([data-theme=light]) .chroma .kt{color:#ff7b72}:root:not([data-theme=light]) .chroma .nc{color:#f0883e;font-weight:700}:root:not([data-theme=light]) .chroma .no{color:#79c0ff;font-weight:700}:root:not([data-theme=light]) .chroma .nd{color:#d2a8ff;font-weight:700}:root:not([data-theme=light]) .chroma .ni{color:#ffa657}:root:not([data-theme=light]) .chroma .ne{color:#f0883e;font-weight:700}:root:not([data-theme=light]) .chroma .nl{color:#79c0ff;font-weight:700}:root:not([data-theme=light]) .chroma .nn{color:#ff7b72}:root:not([data-theme=light]) .chroma .nx{color:#e6edf3}:root:not([data-theme=light]) .chroma .py{color:#79c0ff}:root:not([data-theme=light]) .chroma .nt{color:#7ee787}:root:not([data-theme=light]) .chroma .nv{color:#79c0ff}:root:not([data-theme=light]) .chroma .vc{color:#79c0ff}:root:not([data-theme=light]) .chroma .vg{color:#79c0ff}:root:not([data-theme=light]) .chroma .vi{color:#79c0ff}:root:not([data-theme=light]) .chroma .vm{color:#79c0ff}:root:not([data-theme=light]) .chroma .nf{color:#d2a8ff;font-weight:700}:root:not([data-theme=light]) .chroma .fm{color:#d2a8ff;font-weight:700}:root:not([data-theme=light]) .chroma .l{color:#a5d6ff}:root:not([data-theme=light]) .chroma .ld{color:#79c0ff}:root:not([data-theme=light]) .chroma .s{color:#a5d6ff}:root:not([data-theme=light]) .chroma .sa{color:#79c0ff}:root:not([data-theme=light]) .chroma .sb{color:#a5d6ff}:root:not([data-theme=light]) .chroma .sc{color:#a5d6ff}:root:not([data-theme=light]) .chroma .dl{color:#79c0ff}:root:not([data-theme=light]) .chroma .sd{color:#a5d6ff}:root:not([data-theme=light]) .chroma .s2{color:#a5d6ff}:root:not([data-theme=light]) .chroma .se{color:#79c0ff}:root:not([data-theme=light]) .chroma .sh{color:#79c0ff}:root:not([data-theme=light]) .chroma .si{color:#a5d6ff}:root:not([data-theme=light]) .chroma .sx{color:#a5d6ff}:root:not([data-theme=light]) .chroma .sr{color:#79c0ff}:root:not([data-theme=light]) .chroma .s1{color:#a5d6ff}:root:not([data-theme=light]) .chroma .ss{color:#a5d6ff}:root:not([data-theme=light]) .chroma .m{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mb{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mf{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mh{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mi{color:#a5d6ff}:root:not([data-theme=light]) .chroma .il{color:#a5d6ff}:root:not([data-theme=light]) .chroma .mo{color:#a5d6ff}:root:not([data-theme=light]) .chroma .o{color:#ff7b72;font-weight:700}:root:not([data-theme=light]) .chroma .ow{color:#ff7b72;font-weight:700}:root:not([data-theme=light]) .chroma .or{color:#ff7b72;font-weight:700}:root:not([data-theme=light]) .chroma .c{color:#8b949e;font-style:italic}:root:not([data-theme=light]) .chroma .ch{color:#8b949e;font-style:italic}:root:not([data-theme=light]) .chroma .cm{color:#8b949e;font-style:italic}:root:not([data-theme=light]) .chroma .c1{color:#8b949e;font-style:italic}:root:not([data-theme=light]) .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}:root:not([data-theme=light]) .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}:root:not([data-theme=light]) .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}:root:not([data-theme=light]) .chroma .gd{color:#ffa198;background-color:#490202}:root:not([data-theme=light]) .chroma .ge{font-style:italic}:root:not([data-theme=light]) .chroma .gr{color:#ffa198}:root:not([data-theme=light]) .chroma .gh{color:#79c0ff;font-weight:700}:root:not([data-theme=light]) .chroma .gi{color:#56d364;background-color:#0f5323}:root:not([data-theme=light]) .chroma .go{color:#8b949e}:root:not([data-theme=light]) .chroma .gp{color:#8b949e}:root:not([data-theme=light]) .chroma .gs{font-weight:700}:root:not([data-theme=light]) .chroma .gu{color:#79c0ff}:root:not([data-theme=light]) .chroma .gt{color:#ff7b72}:root:not([data-theme=light]) .chroma .gl{text-decoration:underline}:root:not([data-theme=light]) .chroma .w{color:#6e7681}:root:not([data-theme=light]) .chroma .p{color:#e6edf3}:root:not([data-theme=light]) .chroma .na{color:#79c0ff}:root:not([data-theme=light]) .chroma .nb{color:#d2a8ff}:root:not([data-theme=light]) .chroma .bp{color:#8b949e}:root:not([data-theme=light]) .chroma .ge{color:#e6edf3}}:root[data-theme=dark] .chroma .err{color:#f85149}:root[data-theme=dark] .chroma .k{color:#ff7b72}:root[data-theme=dark] .chroma .kc{color:#79c0ff}:root[data-theme=dark] .chroma .kd{color:#ff7b72}:root[data-theme=dark] .chroma .kn{color:#ff7b72}:root[data-theme=dark] .chroma .kp{color:#79c0ff}:root[data-theme=dark] .chroma .kr{color:#ff7b72}:root[data-theme=dark] .chroma .kt{color:#ff7b72}:root[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:700}:root[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .ni{color:#ffa657}:root[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:700}:root[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .nn{color:#ff7b72}:root[data-theme=dark] .chroma .nx{color:#e6edf3}:root[data-theme=dark] .chroma .py{color:#79c0ff}:root[data-theme=dark] .chroma .nt{color:#7ee787}:root[data-theme=dark] .chroma .nv{color:#79c0ff}:root[data-theme=dark] .chroma .vc{color:#79c0ff}:root[data-theme=dark] .chroma .vg{color:#79c0ff}:root[data-theme=dark] .chroma .vi{color:#79c0ff}:root[data-theme=dark] .chroma .vm{color:#79c0ff}:root[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:700}:root[data-theme=dark] .chroma .l{color:#a5d6ff}:root[data-theme=dark] .chroma .ld{color:#79c0ff}:root[data-theme=dark] .chroma .s{color:#a5d6ff}:root[data-theme=dark] .chroma .sa{color:#79c0ff}:root[data-theme=dark] .chroma .sb{color:#a5d6ff}:root[data-theme=dark] .chroma .sc{color:#a5d6ff}:root[data-theme=dark] .chroma .dl{color:#79c0ff}:root[data-theme=dark] .chroma .sd{color:#a5d6ff}:root[data-theme=dark] .chroma .s2{color:#a5d6ff}:root[data-theme=dark] .chroma .se{color:#79c0ff}:root[data-theme=dark] .chroma .sh{color:#79c0ff}:root[data-theme=dark] .chroma .si{color:#a5d6ff}:root[data-theme=dark] .chroma .sx{color:#a5d6ff}:root[data-theme=dark] .chroma .sr{color:#79c0ff}:root[data-theme=dark] .chroma .s1{color:#a5d6ff}:root[data-theme=dark] .chroma .ss{color:#a5d6ff}:root[data-theme=dark] .chroma .m{color:#a5d6ff}:root[data-theme=dark] .chroma .mb{color:#a5d6ff}:root[data-theme=dark] .chroma .mf{color:#a5d6ff}:root[data-theme=dark] .chroma .mh{color:#a5d6ff}:root[data-theme=dark] .chroma .mi{color:#a5d6ff}:root[data-theme=dark] .chroma .il{color:#a5d6ff}:root[data-theme=dark] .chroma .mo{color:#a5d6ff}:root[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:700}:root[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:700}:root[data-theme=dark] .chroma .or{color:#ff7b72;font-weight:700}:root[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}:root[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}:root[data-theme=dark] .chroma .gd{color:#ffa198;background-color:#490202}:root[data-theme=dark] .chroma .ge{font-style:italic}:root[data-theme=dark] .chroma .gr{color:#ffa198}:root[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:700}:root[data-theme=dark] .chroma .gi{color:#56d364;background-color:#0f5323}:root[data-theme=dark] .chroma .go{color:#8b949e}:root[data-theme=dark] .chroma .gp{color:#8b949e}:root[data-theme=dark] .chroma .gs{font-weight:700}:root[data-theme=dark] .chroma .gu{color:#79c0ff}:root[data-theme=dark] .chroma .gt{color:#ff7b72}:root[data-theme=dark] .chroma .gl{text-decoration:underline}:root[data-theme=dark] .chroma .w{color:#6e7681}:root[data-theme=dark] .chroma .p{color:#e6edf3}:root[data-theme=dark] .chroma .na{color:#79c0ff}:root[data-theme=dark] .chroma .nb{color:#d2a8ff}:root[data-theme=dark] .chroma .bp{color:#8b949e}:root[data-theme=dark] .chroma .ge{color:#e6edf3}