/* Snilld Library – standalone document shell (theme CSS is not loaded on library views). */
@font-face {
  font-family: 'Work Sans'; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("fonts/WorkSans-var.woff2") format("woff2");
}
:root {
  color-scheme: light dark;
  --snl-doc-bg: #faf4f9;            /* $offwhite */
  --snl-doc-text: #1f1b2e;
  --snl-doc-muted: #5f4f68;
  --snl-doc-line: #e7d6e8;
  --snl-doc-brand: #93278f;         /* $main */
  --snl-doc-night: #3b1a54;         /* $darkmain */
  --snl-doc-glass: rgb(250 244 249 / .78);
  --snl-doc-foot-bg: #93278f;
  --snl-doc-foot-text: #ffffff;
  --snl-doc-foot-muted: #f6e4f5;
  --snl-doc-focus: #6b2c8a;
  --snl-ease: cubic-bezier(.2, .8, .2, 1);
}
@media (prefers-color-scheme: dark) {
  :root {
    --snl-doc-bg: #15111f;
    --snl-doc-text: #f7f2f6;
    --snl-doc-muted: #c4b5cc;
    --snl-doc-line: #2f2642;
    --snl-doc-brand: #e9a8e4;
    --snl-doc-night: #f2e6f1;
    --snl-doc-glass: rgb(21 17 31 / .72);
    --snl-doc-foot-bg: #1d1629;
    --snl-doc-foot-text: #f7f2f6;
    --snl-doc-foot-muted: #c4b5cc;
    --snl-doc-focus: #f5cdf2;
  }
}
*, *::before, *::after { box-sizing: border-box; }
html.snl-doc { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
body.snl-body {
  margin: 0; min-height: 100vh; display: flex; flex-direction: column;
  background: var(--snl-doc-bg); color: var(--snl-doc-text);
  font: 400 1.0625rem/1.6 'Work Sans', ui-sans-serif, system-ui, sans-serif;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
body.snl-body ::selection { background: #be3cb6; color: #fff; }
.snl-body img, .snl-body svg { max-width: 100%; }
.snl-body :focus-visible { outline: 3px solid var(--snl-doc-focus); outline-offset: 3px; border-radius: 10px; }
.snl-main { flex: 1 0 auto; outline: none; padding-top: 84px; }
.admin-bar .snl-main { padding-top: calc(84px + 32px); }
.snl-main > .snl { padding-top: clamp(56px, 8vw, 120px); }
@media screen and (max-width: 782px) { .admin-bar .snl-main { padding-top: calc(68px + 46px); } }
.snl-main .snl { background: transparent; }

/* Skip link */
.snl-skip {
  position: fixed; left: 16px; top: 12px; z-index: 100; padding: 12px 18px; border-radius: 999px;
  background: var(--snl-doc-night); color: var(--snl-doc-bg); font-weight: 600; text-decoration: none;
  transform: translateY(-160%); transition: transform .3s var(--snl-ease);
}
.snl-skip:focus { transform: none; }

/* Header – sticky glass bar, condenses on scroll */
.snl-site-header {
  position: fixed; left: 0; right: 0; top: 0; z-index: 50;
  background: var(--snl-doc-glass); -webkit-backdrop-filter: saturate(1.4) blur(14px); backdrop-filter: saturate(1.4) blur(14px);
  border-bottom: 1px solid transparent; transition: border-color .3s var(--snl-ease), box-shadow .3s var(--snl-ease);
}
.snl-site-header.is-scrolled { border-bottom-color: var(--snl-doc-line); box-shadow: 0 10px 30px -22px rgb(59 26 84 / .45); }
.snl-site-header__inner {
  max-width: 1240px; margin: 0 auto; padding: 0 clamp(20px, 4vw, 48px);
  height: 84px; display: flex; align-items: center; justify-content: space-between; gap: 24px;
  transition: height .35s var(--snl-ease);
}
.snl-site-header.is-scrolled .snl-site-header__inner { height: 64px; }
.snl-brand { display: inline-flex; color: var(--snl-doc-night); line-height: 0; border-radius: 12px; }
.snl-brand .snl-logo { width: 112px; height: auto; transition: transform .5s cubic-bezier(.34,1.56,.64,1), width .35s var(--snl-ease); }
.snl-site-header.is-scrolled .snl-brand .snl-logo { width: 96px; }
.snl-brand:hover .snl-logo { transform: rotate(-3deg) scale(1.04); }
.snl-site-nav { display: flex; align-items: center; gap: clamp(8px, 2vw, 20px); }
.snl-site-nav a {
  position: relative; display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 4px;
  color: var(--snl-doc-text); font-weight: 500; font-size: .9375rem; text-decoration: none;
}
.snl-site-nav a:not(.snl-site-nav__home)::after {
  content: ""; position: absolute; left: 4px; right: 4px; bottom: 8px; height: 2px; border-radius: 2px;
  background: currentColor; transform: scaleX(0); transform-origin: left; transition: transform .35s var(--snl-ease);
}
.snl-site-nav a:hover::after, .snl-site-nav a[aria-current="page"]::after { transform: scaleX(1); }
.snl-site-nav__home.snl-site-nav__home {
  padding: 0 18px; border-radius: 999px; border: 1.5px solid var(--snl-doc-line);
  transition: border-color .25s var(--snl-ease), background .25s var(--snl-ease), transform .35s cubic-bezier(.34,1.56,.64,1);
}
.snl-site-nav__home:hover { border-color: var(--snl-doc-brand); transform: translateY(-1px); }
.snl-site-nav__home svg { transition: transform .35s var(--snl-ease); }
.snl-site-nav__home:hover svg { transform: translate(2px, -2px); }

/* Footer – big Snilld footer, two columns with divider */
.snl-site-footer {
  margin-top: clamp(48px, 8vw, 120px); background: var(--snl-doc-foot-bg); color: var(--snl-doc-foot-text);
  border-top: 8px solid #3b1a54;
}
.snl-site-footer__inner {
  max-width: 1240px; margin: 0 auto; padding: clamp(48px, 7vw, 96px) clamp(20px, 4vw, 48px) 40px;
  display: grid; grid-template-columns: 1.3fr 1fr; gap: clamp(32px, 6vw, 96px);
}
.snl-site-footer__brand { display: grid; gap: 22px; align-content: start; justify-items: start; }
.snl-brand--footer { color: var(--snl-doc-foot-text); }
.snl-brand--footer .snl-logo { width: clamp(150px, 18vw, 220px); }
.snl-site-footer__brand p { margin: 0; max-width: 30rem; color: var(--snl-doc-foot-muted); font-size: 1.0625rem; }
.snl-site-footer__cta {
  display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 22px; border-radius: 999px;
  border: 1.5px solid currentColor; color: var(--snl-doc-foot-text); text-decoration: none; font-weight: 600;
  transition: background .25s var(--snl-ease), color .25s var(--snl-ease), transform .35s cubic-bezier(.34,1.56,.64,1);
}
.snl-site-footer__cta:hover { background: var(--snl-doc-foot-text); color: var(--snl-doc-foot-bg); transform: translateY(-2px); }
.snl-site-footer__cta .snl-star { width: 12px; height: 12px; background: currentColor; clip-path: polygon(50% 0, 61% 39%, 100% 50%, 61% 61%, 50% 100%, 39% 61%, 0 50%, 39% 39%); }
.snl-site-footer__contact {
  font-style: normal; display: grid; gap: 6px; align-content: end; font-size: .9375rem;
  padding-left: clamp(24px, 4vw, 48px); border-left: 1px solid rgb(255 255 255 / .35);
}
.snl-site-footer__contact a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.snl-site-footer__contact a:hover { text-decoration-thickness: 2px; }
.snl-site-footer__legal {
  max-width: 1240px; margin: 0 auto; padding: 20px clamp(20px, 4vw, 48px) 32px; font-size: .8125rem; color: var(--snl-doc-foot-muted);
  border-top: 1px solid rgb(255 255 255 / .2);
}
.snl-site-footer :focus-visible { outline-color: currentColor; }
@media (max-width: 720px) {
  .snl-site-header__inner { height: 68px; }
  .snl-main { padding-top: 68px; }
  .snl-brand .snl-logo { width: 92px; }
  .snl-main > .snl { padding-top: 40px; }
  .snl-site-nav > a:not(.snl-site-nav__home) { display: none; }
  .snl-site-footer__inner { grid-template-columns: 1fr; }
  .snl-site-footer__contact { padding-left: 0; border-left: 0; padding-top: 28px; border-top: 1px solid rgb(255 255 255 / .35); }
}
@media (prefers-reduced-motion: reduce) {
  html.snl-doc { scroll-behavior: auto; }
  .snl-body *, .snl-body *::before, .snl-body *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}
