.ds-loader{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--ink)}.ds-loader__heart{width:40px;height:auto;animation:ds-heartbeat 1.4s ease-in-out infinite}.ds-loader__label{color:var(--ink-muted);font-size:var(--fs-caption)}#main-content.ds-page-loader{position:fixed;inset:0;z-index:150;display:grid;place-items:center;padding:0;background:var(--paper)}.ds-block-loader{display:grid;place-items:center;min-height:180px}.ds-spinner{display:inline-block;width:1em;height:1em;flex:none;box-sizing:border-box;border:2px solid;border-right:2px solid transparent;border-radius:50%;vertical-align:-.125em;animation:ds-spinner .7s linear infinite}@keyframes ds-spinner{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.ds-loader__heart{animation:none}.ds-spinner{animation-duration:1.6s}}.ds-home-intro{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;background:var(--paper);color:var(--ink);animation:ds-home-intro-out .7s cubic-bezier(.7,0,.2,1) 1.6s both}.ds-home-intro__heart{width:clamp(96px,14vw,152px);height:auto;overflow:visible}.ds-home-intro__heart path{fill:currentColor;fill-opacity:0;stroke:currentColor;stroke-width:12;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1;animation:ds-home-intro-draw .95s cubic-bezier(.65,0,.35,1) .1s forwards,ds-home-intro-fill .35s var(--ease) .9s forwards}.ds-home-intro__word{width:clamp(150px,16vw,210px);height:auto;opacity:0;animation:ds-home-intro-rise .45s var(--ease) 1s forwards}@keyframes ds-home-intro-draw{to{stroke-dashoffset:0}}@keyframes ds-home-intro-fill{to{fill-opacity:1;stroke-width:0}}@keyframes ds-home-intro-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes ds-home-intro-out{to{transform:translateY(-100%);visibility:hidden}}@media (prefers-reduced-motion:reduce){.ds-home-intro{display:none}}html[data-routed] #main-content:not([data-first]){animation:ds-page-in .32s var(--ease) both}@keyframes ds-page-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){html[data-routed] #main-content:not([data-first]){animation:none}}