/* Dekodi base layer v2: ground, type defaults, focus, shared keyframes. */
html{color-scheme:dark}
body{background:var(--dk-black);color:var(--dk-white);font-family:var(--dk-font-body);font-weight:var(--dk-weight-body);-webkit-font-smoothing:antialiased}
p,li,blockquote,h1,h2,h3,h4{text-wrap:pretty}
a{color:var(--dk-white);text-decoration:none;transition:color var(--dk-dur-fast) var(--dk-ease)}
button,[role=button]{text-wrap:nowrap}
a:hover{color:var(--dk-lilac)}
:focus-visible{outline:var(--dk-focus);outline-offset:var(--dk-focus-offset)}
::selection{background:rgba(139,92,255,.32);color:#fff}
.dk-canvas{background:var(--dk-black);color:var(--dk-white);background-image:var(--dk-glow-core)}
@keyframes dk-reveal{from{opacity:0;transform:translateY(var(--dk-rise));filter:blur(var(--dk-blur))}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes dk-enter{from{opacity:0;transform:translateY(var(--dk-rise))}to{opacity:1;transform:none}}
@keyframes dk-fill{from{width:0}to{width:var(--dk-v,100%)}}
@keyframes dk-clip-in{from{opacity:.3;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0)}}
@keyframes dk-route{from{transform:translateX(-120%)}to{transform:translateX(520%)}}
@keyframes dk-sweep{0%,55%{transform:translateX(-100%)}85%,100%{transform:translateX(100%)}}
@keyframes dk-live{50%{opacity:.45;box-shadow:0 0 4px var(--dk-live)}}
@keyframes dk-orbit{to{transform:rotate(360deg)}}
@keyframes dk-breath{50%{box-shadow:var(--dk-glow-field-peak),inset 0 0 80px rgba(139,92,255,.18)}}
@keyframes dk-drift{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(-3%,2%,0)}}
@keyframes dk-pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.82)}}
